[关闭]
@panhonhang 2018-08-08T10:31:33.000000Z 字数 708 阅读 613

什么是伪数组和如何把它转化为数组

javascript


什么是伪数组?

伪数组
1、拥有length属性,其它属性为非负整数。
2、不具有数组所具有的方法,如push、shift、pop等方法;
3、伪数组是一个对象 .

用下列代码可以判断

function isArrayLike(o) {   
    if (o && typeof o === 'object' &&
    isFinite(o.length) && o.length >= 0 &&
    o.length===Math.floor(o.length) && 
    o.length < 4294967296)
            return true
    else
            return false; 
}

不过有一个更简单的方法,用isArray()来判断:

Array.isArray(fakeArray) === false;
Array.isArray(arr) === true;

常见的伪数组:典型的arguments参数,调用“getElementsByTagName”,“document.childNodes”之类的,它们返回的NodeList对象都属于伪数组。

如何把伪数组转换为数组?

  1. 声明一个空数组,通过遍历把伪类添加给数组。

    var arr = [];
    for (var i = 0; i < ali.length; i++) {
    arr[arr.length] = aLi[i]
    }

  2. Array.prototype.slice.call()方法
    slice他返回一个数组,使用call或者apply指向伪类。

    var arr = Array.prototype.slice.call(aLi);
    
  3. 使用ES6中Array.from方法;

    function f() {
    return Array.from(arguments);
    }

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注