伪数组 数组 你真的懂了吗?
伪数组和数组的区别
伪数组
啥叫伪数组呢?伪数组,即 arrayLike
,也称为类数组。是一种按照索引存储数据且具有 length
属性的对象。因为是对象,所以不能调用数组的方法,比如 forEach()
、push()
等。
我们先来看个例子。
let fakeArray = { '0': 1, '1': 2, '2': 3, length: 3 }
这个就是伪数组。
我们可以看到伪数组也可以和数组一样通过下标拿取其中的元素,并且拿到他们的长度。
然后我们再看一看,我们可以看到正常的数组可以进行push方法,存取数据,而伪数组不可以调用,同时伪数组的类型并不是 数组。
伪数组七十二变
那么当我们有一些数据得到的是伪数组,那么我们又该怎么对它进行操作呢?它又不可以调用数组的方法。 对呀,当我们把伪数组转化为数组,不就可以调用数组方法处理数据啦。那么我们又该怎么转化呢?
ES6里的**Array.from()**方法
let fakeArray = { '0': 1, '1': 2, '2': 3, length: 3 }
let a = Array.from(fakeArray)
console.log(a)
数组的concat()方法
let fakeArray = { '0': 1, '1': 2, '2': 3, length: 3 }
let b = [].concat.apply([],fakeArray)
console.log(b)
数组的slice()方法
这里用到apply,主要是为了使得伪数组能够使用slice这个方法。也可以用call,就是为了让this指定伪数组。
for遍历方法
let fakeArray = { '0': 1, '1': 2, '2': 3, length: 3 }
let d = [];
for (let i = 0; i < fakeArray.length; i++) {
d.push(fakeArray[i]);
}
转载自:https://juejin.cn/post/7222651312073539639