@panhonhang
2018-08-08T10:31:33.000000Z
字数 708
阅读 674
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对象都属于伪数组。
如何把伪数组转换为数组?
声明一个空数组,通过遍历把伪类添加给数组。
var arr = [];
for (var i = 0; i < ali.length; i++) {
arr[arr.length] = aLi[i]
}
Array.prototype.slice.call()方法
slice他返回一个数组,使用call或者apply指向伪类。
var arr = Array.prototype.slice.call(aLi);
使用ES6中Array.from方法;
function f() {
return Array.from(arguments);
}