数组和类数组的迭代
先看一个例子
const likeArray = {
0:'a',1:'b',2:'c',3: 'd',length: 4}
console.log('打印:', [...likeArray])
// 输出结果: TypeError: likeArray is not iterable console.log(Array.from(likeArray))
// [ 'a', 'b', 'c', 'd' ]
结论
一个类数组的对象在通常状态下,无法被解构,因为这个对象上没有迭代器,除了使用Array.from方法可以将类数组变为一个数组。
想要让一个类数组可以迭代,我们可以手动改写原生的遍历器。给对象增加一个遍历器接口,必须返回一个对象包含next方法,next方法返回的对象里,当done为true,就停止遍历
const likeArray = {
0:'a',1:'b',2:'c',3: 'd',length: 4}
likeArray[Symbol.iterator] = function (params) {
let i = 0
return {
next:() => {
return {
value: this[i], done: i++ === this.length}
}
}
}
console.log('打印:', [...likeArray