【发布时间】:2022-01-13 18:29:13
【问题描述】:
所以,我正在尝试重新组合元素……以一种难以解释的方式。这是输入和预期输出的示例...
zip(['fred', 'barney'], [30, 40], [true, false]);
should output...
→ [['fred', 30, true], ['barney', 40, false]]
我认为 reduce 是合适的,因为我应该采用多个数组并将其转换为包含与输入数组长度相同数量的数组的单个数组...
这就是我正在做的事情......它不起作用,但我相信我接近正确的想法!
function zip(array) {
return array.reduce((acc, next) => {
// get length of next array to use in for-loop...
let numOfElem = next.length
// use a for loop to access different indexed arrays...
for (let i = 0; i < numOfElem; i++) {
// this is supposed to push the appropriate element in the next array to the accumulator array's corresponding index...
acc[i].push(next[i]);
}
return acc;
}, [])
}
const result = zip(['fred', 'barney'], [30, 40], [true, false]);
console.log(result);
我相信我试图错误地推动? acc[i].push(next[i]) 背后的想法是 acc[i] 将根据输入的长度创建必要数量的数组数组。代码不起作用。我只是在寻找一种让它工作的方法,即使是通过不同的方法!
感谢您花时间阅读本文以及任何反馈、提示或技巧!
【问题讨论】:
-
zip在您的示例中应该采用多个数组,但是,实现只需要一个。哪些应该是正确的? -
我对你的意思有点困惑......你能解释一下吗?
-
zip(['fred', 'barney'], [30, 40], [true, false]);正在使用三个数组调用zip。您的function zip(array) {显然需要一个数组。这两者是不相容的。只有其中一个是正确的。 -
哦...有道理...我猜 reduce 可能不会起作用?
-
现在它只会遍历第一个数组。因此我的问题是 - 您要么打算传递包含其他数组的 one 数组,要么想要接受可变数量的数组并遍历它们。哪一个?
标签: javascript arrays grouping reduce