美文网首页
arguments 类数组 解析, 如何转化成数组?

arguments 类数组 解析, 如何转化成数组?

作者: lovelydong | 来源:发表于2020-04-07 11:17 被阅读0次

    因为argument是一个对象,只不过它的属性从0开始排,依次为0,1,2...最后还有callee和length属性。我们也把这样的对象称为类数组。
    常见的类数组还有:

    1. 用getElementByTagName/ClassName/Name()获得的HTMLCollection
    2. 用querySlector获得的nodeList

    类数组不能用数组的方法,必要时需要我们将它们转换成数组,有哪些方法呢?

    最原始的方法就是再创建一个数组,用for循环把类数组的每个属性值放在里面
    1. Array.prototype.slice.call()
    function sum(a, b) {
      let args = Array.prototype.slice.call(arguments);
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3
    
    2. Array.from()
    function sum(a, b) {
      let args = Array.from(arguments);
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3
    
    3. ES6展开运算符
    function sum(a, b) {
      let args = [...arguments];
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3
    
    4. 利用concat+apply
    function sum(a, b) {
      let args = Array.prototype.concat.apply([], arguments);//apply方法会把第二个参数展开
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3
    

    相关文章

      网友评论

          本文标题:arguments 类数组 解析, 如何转化成数组?

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