gpt4 book ai didi

javascript - 我正在尝试使用reduce...重新组合数组数组,但失败了

转载 作者:行者123 更新时间:2023-12-02 18:25:32 25 4
gpt4 key购买 nike

所以,我正在尝试重新组合这些元素......以一种难以解释的方式。这是输入和预期输出的示例...

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] 将根据输入的长度创建必要数量的数组数组。该代码不起作用。我只是在寻找一种让它发挥作用的方法,即使是通过不同的方法!

感谢您花时间阅读本文并提供任何反馈、提示或技巧!

最佳答案

您可以减少参数并映射相同索引的部分结果。

const
zip = (...array) =>
array.reduce((r, a) => a.map((v, i) => [...(r[i] || []), v]), []);

console.log(zip(['fred', 'barney'], [30, 40], [true, false]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

数组长度不等的方法。

const
zip = (...array) => array.reduce((r, a, i) => {
while (r.length < a.length) r.push(Array(i).fill(undefined));
return r.map((b, j) => [...b, a[j]]);
}, []);

console.log(zip(['fred', 'barney'], [30, 40, 3, 4, 5, 6, 7], [true, false, 'don\'t know']));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 我正在尝试使用reduce...重新组合数组数组,但失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70281205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com