概念
具有索引
属性,和 length
属性的对象,如arguments
const arrLike = {0: 'a', 1:'b', length:2}
类数组属性扩展
类数组可以把数组
和对象
的属性拼到一起,但数组要自己添加
var arrLike = { 0: 'a', 1: 'b', length:2, 'push':[].push };
console.log(arrLike.push('c'));//3
console.log(arrLike);//{0: 'a', 1: 'b', 2: 'c', length: 3, push: ƒ}
类数组转数组的5种方法
1. Array.from
var arrLike = {0: 'a', 1: 'b', a: 3, length: 2};
Array.from(arrLike);//['a','b']
2. … 扩展运算符 + 迭代器
注意:类数组本身没有迭代器
Iterator
var arrLike = { 0: 'a', 1: 'b', length:2, [Symbol.iterator]:[][Symbol.iterator] };
console.log([...arrLike]);//['a','b']
3. Array.apply
var arrLike = {0: 'a', 1: 'b', a: 3, length: 2};
console.log(Array.apply(null, arrLike)) //[ 'a', 'b' ] 调用数组类自身的apply方法
4. 利用循环
var arrLike = { 0: 'a', 1: 'b', length:2 };
var arr = []
for(let i =0;i<arrLike.length;i++){
arr.push(arrLike[i])
}
console.log(arr);//['a','b']
5. slice
var arrLike = {0: 'a', 1: 'b', a: 3, length: 2};
console.log([].slice.call(arrLike)) //[ 'a', 'b' ] 调用数组原型上的slice方法