Array.from 和[…]的区别
Array.from(arr) 和[…arr] 都可以将类数组arr转换成数组
什么叫类数组
有数字索引
有长度length
是个对象
能被迭代
如果arr只有索引和长度,并且是对象,所以可以被Array.from转换成数组的,但是[…arr]方法,就必须可以被迭代
let obj = {'0': 1,'1': 2,'2': 3,length: 3}
let arr = Array.from(obj)
console.log(arr)
let arr1= [...obj]
console.log(arr1)
上面的obj 因为不能被迭代 所以在进行[…obj]转换的时候就会报错object is not iterable,所以我们如果需要在obj上进行…运算,还需要在上面增加一个属性[Symbol.iterator]
let obj = {
'0': 1,
'1': 2,
'2': 3,
length: 4,
[Symbol.iterator]: function(){
let index = 0
let next = () => {
return {
value: this[index],
done: this.length == ++ index
}
}
return {
next
}
}
}
let arr = Array.from(obj)
console.log(arr)
let arr1= [...obj]
console.log(arr1)