[使用rest参数语法将数组作为函数参数传递

问题描述 投票:2回答:1

以下函数使用其余参数语法将多个值用作其函数的参数。

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));
javascript
1个回答
3
投票

concat有点奇怪。它可以接受一个数组作为参数,在这种情况下,它将创建一个包含两个数组的所有元素的新数组:

console.log(
  [1, 2].concat([3, 4])
);

或者,它可以接受单个元素作为参数,在这种情况下,它将创建一个包含该附加元素的新数组:

console.log(
  [1, 2].concat(3)
);

[这里,您的joinArrays([1],[2],[3])正在执行第一个过程,从每个数组中获取每个项目,并从这些项目中创建一个新的数组。

© www.soinside.com 2019 - 2024. All rights reserved.