以下函数使用其余参数语法将多个值用作其函数的参数。
console.logs
都将给出正确的结果[1,2,3]
。
但是第一个console.log
不应收集以下结果-> [[1],[2],[3]]
,因为它不是收集3个数字而是3个数组?
function joinArrays(...vals){
return vals.reduce((acc, next) => acc.concat(next), []);
}
console.log(joinArrays([1],[2],[3]));
console.log(joinArrays(1,2,3));
concat
有点奇怪。它可以接受一个数组作为参数,在这种情况下,它将创建一个包含两个数组的所有元素的新数组:
console.log(
[1, 2].concat([3, 4])
);
或者,它可以接受单个元素作为参数,在这种情况下,它将创建一个包含该附加元素的新数组:
console.log(
[1, 2].concat(3)
);
[这里,您的joinArrays([1],[2],[3])
正在执行第一个过程,从每个数组中获取每个项目,并从这些项目中创建一个新的数组。