gpt4 book ai didi

javascript - 基于第 n 个元素合并数组的有效方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:01 24 4
gpt4 key购买 nike

这相对简单,但让我苦恼的是找不到更优雅的解决方案。

假设你有一个 n 维数组,你想通过某种方法将具有匹配的第 m 个元素的数组压缩在一起,比方说加法。

示例:[[1, 100], [1, 200], [2, 100], [2, 105], [3, 202], [4, 133]]

结果:[[1, 300], [2, 205], [3, 202], [4, 133]]

我提出的解决方案对我来说似乎真的不雅。有没有办法用更少的代码或更有效的方式来做到这一点?

function mergePairs(originalArray) {
const newArray = [];
originalArray.forEach((pair) => {
const foundPair = newArray.find((newPair) => {
return newPair[0] === pair[0];
});
if (foundPair) {
foundPair[1] += pair[1];
} else {
newArray.push(pair);
}
});
return newArray;
}

旁白:如果 lodash 中有一个厚颜无耻的单行代码以极其低效的方式完成同样的事情,我也很高兴。

最佳答案

您可以针对特定情况使用reducemap:

function mergePairs (originalArray) {
const o = originalArray.reduce((a, e) => (a[e[0]] = ~~a[e[0]] + e[1]) && a, {});
return Object.keys(o).map(k => [+k, o[k]]);
}

console.log(mergePairs ([[1, 100], [1, 200], [2, 100], [2, 105], [3, 202], [4, 133]]))

关于javascript - 基于第 n 个元素合并数组的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48272563/

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