以下函数使用剩余参数语法接收多个值作为其函数的参数。
两个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/