乐趣区

关于前端:Arrayform-和的区别

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)
退出移动版