1. 程式人生 > 其它 >js陣列與偽陣列分辨

js陣列與偽陣列分辨

技術標籤:js

常見的偽陣列是由元素獲取的到的如:document.getElementsByTagName(‘li’)

陣列於偽陣列的差別有不具有陣列所具有的方法和偽陣列的length屬性是靜態的不可變

分辨

1.console.log打印出來
可以打印出來分辨:
真陣列:
在這裡插入圖片描述
偽陣列:
在這裡插入圖片描述

或者__proto__是object;總之不是Array

2.Array.isArray()
這個方法可以判斷該物件是不是陣列。是陣列就返回true,不是陣列就返回false

Array.isArray(arr)

3.Object.prototype.toString.call(arr)
這個方法可以精確判斷物件的型別;

之前常用的typeof 並不能判斷偽陣列:在這裡插入圖片描述

都返回object;
但是Object.prototype.toString.call(arr):
在這裡插入圖片描述
能返回準確的型別;

4.使用陣列的方法
偽陣列不是陣列他只是有陣列的屬性但不能使用陣列的方法所以其實可以使用這個特性來判斷比如:
在這裡插入圖片描述
偽陣列使用陣列的方法就會報錯;

5.《javascript權威指南》上給出了程式碼用來判斷一個物件是否屬於“偽陣列

function isArrayLike(o){
    if(o &&                                       //o非null.undefined
        typeof
o === "object" && //o是物件 isFinite(o.length) && //o.length是有限數值 o.length > 0 && //o.length為非負數 o.length === Math.floor(o.length) && //o.length是整數 o.length < 4294967296
){ //o.length<2^32 return true; }else{ return false; } }