gpt4 book ai didi

javascript - 如何从数组中删除具有相同 id 的多个项目,但在增加其 "qty"的同时保留一个项目?

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

我有一个像这样的数组:

const arr = [
{ price: 12, desc: 'desc', id: 123, qty: 1 },
{ price: 12, desc: 'desc', id: 123, qty: 1 },
{ price: 12, desc: 'desc', id: 123, qty: 1 }
];

我希望能够删除 x 个项目,直到只剩下一个 ID 为 123 的项目。不过,我还想增加该项目的数量,无论有多少其他具有相同 ID 的项目。

例如,我想要一个像这样的结果数组:

const result = [ { price: 12, desc: 'desc', id: 123, qty: 3 } ];

最佳答案

您可以使用函数reduce对匹配的id进行分组和统计。

const arr = [{ price: 12, desc: 'desc', id: 123, qty: 1 },{ price: 12, desc: 'desc', id: 123, qty: 1 },{ price: 12, desc: 'desc', id: 123, qty: 1 }];

// The function Object.values returns the values of every object, for example:
// accumulator = {
// "123": { price: 12, desc: 'desc', id: 123, qty: 3 }
// }
// The function Object.values returns:
// { price: 12, desc: 'desc', id: 123, qty: 3 }
const result = Object.values(arr.reduce((a, c) => {
// The accumulator 'a' will contain objects as follow:
// {'123': {id: 123, desc: 'desc'...., qty: 2}}

// This line checks for the current object with 'c.id'
// If that object doesn't exist, a new object is created with
// a further property called 'qty' and then we add +1
(a[c.id] || (a[c.id] = Object.assign(c, {qty: 0}))).qty++;
return a;
}, {}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何从数组中删除具有相同 id 的多个项目,但在增加其 "qty"的同时保留一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49777611/

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