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)