美文网首页
2022-04-08 lodash源码学习 - concat

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

作者: 网恋被骗二块二 | 来源:发表于2022-04-08 20:35 被阅读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));
          }
    

    相关文章

      网友评论

          本文标题:2022-04-08 lodash源码学习 - concat

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