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)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。