Array.form 和 […] 的区别
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)