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));
}