2022-04-08 lodash源码学习 - concat

2022-04-08  本文已影响0人  网恋被骗二块二

function concat()
创建一个用任何数组 或 值连接的新数组。

@param {Array} array The array to concatenate.
需要被连接的数组

@param {...*} [values] The values to concatenate.
需要被连接的值的队列

function concat() {
        // 在 function 中,若没有形参接收参数,则所有实参存入 arguments 这个伪数组中
        // arguments 具有数组的一部分属性
        // 获取所有参数的个数
        var length = arguments.length;
        // 若个数为 0,则返回空数组
        if (!length) {
          return [];
        }
        // 生成一个长度减一的数组,表示除开数组外剩余的参数
        var args = Array(length - 1),
            // array 是第一个参数,也是需要拼接的数组
            array = arguments[0],
            // 下标等于长度
            index = length;
  
        while (index--) {
          // 这里采用倒序遍历的方式提取其他的参数
          // 这里我写了案例测试过,虽然 args 会显示 -1: value 的内容,但实际长度还是从 0 开始计算的
          args[index - 1] = arguments[index];
        }
        // 这里使用到了几个方法
        // arrayPush、copyArray、baseFlatten 会一一详解
        // isArray 用作判断第一个参数是否是数组,若是,则复制,若不是,手动生成一个数组
        // copyArray 用作拷贝当前数组到新的数组
        // baseFlatten 用作展平数组,第一个参数为需要展平的数组,第二个参数为需要展平的层数
        // arrayPush 用作拷贝内容,将第二个数组参数中的值拷贝到第一个数组中,不改变原数组中的值
        return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
      }
上一篇下一篇

猜你喜欢

热点阅读