数组-concat

114 阅读1分钟

说明

    _.concat(array, [values])
     创建一个新数组,将array与任何数组 或 值连接在一起。

    举例:
     var array = [1];
     var other = _.concat(array, 2, [3], [[4]]);

     console.log(other);
     // => [1, 2, 3, [4]]

     console.log(array);
     // => [1]

实现

    function myConcat(array = [], ...arr) {
      if (!Array.isArray(array)) {
        return array;
      }
      // 首先使用已有的 concat 方法最简单但是这样也没有必要区封装
      // return array.concat(...arr);
      // ES6 ...
      const newArr = arr.reduce((n, item) => {
        if (Array.isArray(item)) {
          n.push(...item);
        } else {
          n.push(item);
        }
        return n;
      }, []);
      // ES5 使用 arguments 然后 通过 Array.from 转换 arguments 之后在进行上述的合并操作
      return newArr;
    }
    const arr = [1];
    console.log(myConcat(arr, [2], 3, [4, [5, 6]], { name: 1 }));
    // [ 2, 3, 4, [ 5, 6 ], { name: 1 } ]
    console.log(arr);
    // [ 1 ]

总结:这里用到的知识点为:利用 reduce 函数来进行汇总和浅克隆