什么是伪数组,如何将伪数组转为真数组
- 什么是伪数组?
常见的伪数组有:
a.具有length属性;
例如:
var obj={0:“lily”,1:21,2:“abc”} //不是伪数组,没有length属性
var obj={0:“lily”,1:21,2:“abc”,length:3} //是伪数组,有length属性
b. 通过arguments对象获取的;
c. 通过调取getElementsByTagName, getElementsByClassName,document.childNodes以及自定义对象等,他们返回的对象都属于伪数组,也称为类数组。
注意:如果length的属性值为0,那么这个对象有没有元素都无所谓;若是length的值不为0,则这个对象中一定会有下标为length-1的属性值。
例如:
var obj={length:0};
var obj={legth:2,1:‘a’}//可以认为下标为0存的值为undefined; - 如何将伪数组转换为真数组?(3种方法)
a. 通过es6的Array.form()
var obj={
0:"lily",
1:21,
2:"abc",
length:3
}
var arr= Array.from(obj);
console.log(arr) // ["lily", 21, "abc"]
b.通过数组的slice方法
var obj={
0:"lily",
1:21,
2:"abc",
length:3
}
var arr= Array.prototype.slice.call(obj);
console.log(arr) // ["lily", 21, "abc"]
c.通过call
var arr=[];
var obj={
0:"lily",
1:21,
2:"abc",
length:3
}
var arr= arr.slice.call(obj);
console.log(arr) // ["lily", 21, "abc"]

本文详细解释了伪数组的概念,并提供了三种将伪数组转换为真数组的方法,包括使用ES6的Array.from()、数组的slice方法及call方法。
353

被折叠的 条评论
为什么被折叠?



