美文网首页
如何把一个类数组对象转换成数组

如何把一个类数组对象转换成数组

作者: 老虎爱吃母鸡 | 来源:发表于2016-10-24 21:16 被阅读0次

    ES5的方法

    主要借用[].slice.call()实现

    var foo = function() {
        var arr = [].slice.call(arguments)
        var result = Object.prototype.toString.call(arr)
        console.log(arr) //[]
    }()
    

    ES6的方法

    1. 使用Array.from, 值需要对象有length属性, 就可以转换成数组
    const arrayLike = {
      length: 5
    }
    let arr2 = Array.from(arrayLike)
    //[undefined, undefined, undefined, undefined, undefined]
    
    1. 使用展开运算符
      但是展开运算符只能将某些数据结构转换成数组, 因为本质是调用遍历器接口(Symbol.iterator
      ),如果一个对象没有部署这个接口,就无法转换 --- 阮一峰ES6
    // arguments对象
    function foo() {
      var args = [...arguments];
    }
    // NodeList对象
    [...document.querySelectorAll('div')]
    

    兼容写法

    const toArray = (() => Array.from ? Array.from : obj => [].slice.call(obj))();
    

    Demo

    阮一峰ES6教程

    let arrayLike = {
        '0': 'a',
        '1': 'b',
        '2': 'c',
        length: 3
    };
    // ES5的写法
    var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']
    // ES6的写法
    let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
    

    相关文章

      网友评论

          本文标题:如何把一个类数组对象转换成数组

          本文链接:https://www.haomeiwen.com/subject/bqnluttx.html