gpt4 book ai didi

javascript - 我如何组合数组中的数据值来创建一个新数组

转载 作者:行者123 更新时间:2023-11-30 09:42:53 26 4
gpt4 key购买 nike

var players = [{id: 17, amount: 126},
{id: 17, amount: 45},
{id: 12, amount: 44},
{id: 12, amount: 23}];

我如何将上面的数组变成一个新数组,添加每个 id 的数量。

var newArray=[{id:17.amount:171},{id:12,amount:67}];

最佳答案

您可以使用哈希表对相同的 ID 进行分组,并在必要时添加数量。

var players = [{ id: 17, amount: 126 }, { id: 17, amount: 45 }, { id: 12, amount: 44 }, { id: 12, amount: 23 }],
grouped = players.reduce(function (hash) {
return function (r, a) {
(hash[a.id] = hash[a.id] || r[r.push({ id: a.id, amount: 0 }) - 1]).amount += a.amount;
return r;
};
}(Object.create(null)), []);

console.log(grouped);

基本上是这一行

(hash[a.id] = hash[a.id] || r[r.push({ id: a.id, amount: 0 }) - 1]).amount += a.amount;

检查 hash[a.id] 是否存在,如果不存在,则这部分

r[r.push({ id: a.id, amount: 0 }) - 1]

是perfomed,它包含两部分,一部分是访问结果集,一部分是在里面推送一个新的objetc set到结果集。当 push 返回数组的新长度时,它需要减少索引以获得最后插入的元素。

r[                                - 1]
r.push({ id: a.id, amount: 0 })

之后,获取属性 amount 并增加实际元素的数量。

关于javascript - 我如何组合数组中的数据值来创建一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305828/

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