一、什么是伪数组
伪数组指的是长得像数组,但实际上不是真正的数组,它们是由arguments
、DOM集合
、NodeList
等对象提供的。这些对象只支持一部分数组方法,无法使用数组的全部属性和方法。
二、为什么需要把伪数组转化为真数组
在JavaScript编程中,我们通常需要使用数组来存储和操作数据,而某些情况下我们只能使用伪数组,这时就需要把伪数组转化为真数组,以便于使用数组的全部属性和方法。
三、如何将伪数组转化为真数组
1.使用Array.from方法
const fakeArray = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
const realArray = Array.from(fakeArray);
console.log(realArray); // ["a", "b", "c"]
我们可以使用Array.from()
方法将伪数组转化为真数组,这个方法可以接收一个类数组对象、可迭代对象等,返回一个新的真实数组。
2.使用Array.prototype.slice方法
const fakeArray = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
const realArray = Array.prototype.slice.call(fakeArray);
console.log(realArray); // ["a", "b", "c"]
我们也可是使用Array.prototype.slice.call()
方法将伪数组转化为真数组,这个方法将原本只能操作数组的Array.prototype.slice()
方法的this
指针指向伪数组对象。
3.使用展开运算符
const fakeArray = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
const realArray = [...fakeArray];
console.log(realArray); // ["a", "b", "c"]
我们还可以使用ES6新增的展开运算符...
将伪数组转化为真数组,将伪数组对象作为展开运算符的参数,就可以直接转化为真正的数组。
四、扩展:伪数组和真数组的区别
伪数组通过Object
对象模拟数组,它们和真数组有一些区别:
- 拥有一部分数组属性和方法,无法使用数组的全部属性和方法;
- 无法使用数组字面量表达式创建,只能手动构造;
- 原型链不同,伪数组原型链中没有
Array
而是Object
。
总之,伪数组只是长得像数组,表现出一些类似数组的行为和特征,但它们不完全满足数组的特征,无法完全代替真数组。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/293485.html