javascript - 使用剩余参数语法将数组作为函数参数传递

标签 javascript

以下函数使用剩余参数语法接收多个值作为其函数的参数。

两个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]) 正在执行第一个过程,从每个数组中获取每个项目,并从这些项目创建一个新数组。

关于javascript - 使用剩余参数语法将数组作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61202679/

相关文章:

javascript - 对一段代码感到困惑,特别是 null : Eloquent Javascript practice

javascript - JavaScript 作用域

分配左侧的 Javascript 对象括号表示法 ({ Navigation } =)

javascript - AngularJS 在页面上显示 svg 文件

javascript - iPad Canvas 性能非常差甚至为零

javascript - 用Enzyme/Jest模拟点击测试不调用Sinon Spy

javascript - 有没有办法控制 Chrome 应用程序的进度条?

javascript - Angularjs 检测新 Dom 上的指令

Javascript - 转储所有全局变量

javascript - 如何循环遍历 querySelectorAll 匹配的子项