请教大家个问题,对象数组去除重复数据,并且累加数量?
let arr = [
{
code: "10AT",
batch: "1027",
store: "001",
number: 10,
},
{
code: "10AT",
batch: "1027",
store: "001",
number: 10,
},
{
code: "10AT",
batch: "1027",
store: "002",
number: 10,
},
{
code: "10AAT",
batch: "1027",
store: "002",
number: 100,
},
];
需要将code,batch,store都相同的number累加,并且去除重复项,结果为
let result = [
{
code: "10AT",
batch: "1027",
store: "001",
number: 20,
},
{
code: "10AT",
batch: "1027",
store: "002",
number: 10,
},
{
code: "10AAT",
batch: "1027",
store: "002",
number: 100,
},
];
回复
1个回答

test
2024-07-17
基本思路:分组→按组合计→处理成结果视图
用 Lodash
const result = _(arr).groupBy(({ code, batch, store }) => [code, batch, store].join("|"))
.values()
.map(list => {
const { code, batch, store } = list[0];
return { code, batch, store, number: _.sumBy(list, "number") };
})
.value();
自己写
const result = Object.values(
arr.reduce((r, { code, batch, store, number }) => {
const key = `${code}|${batch}|${store}`;
const item = r[key] ??= { code, batch, store, number: 0 };
item.number += number;
return r;
}, {})
);
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容