【发布时间】:2021-12-06 11:44:15
【问题描述】:
我希望结果是对同一只猫的所有数量求和。
var data = [
{ cat: 'EK-1',name:"test",info:"mat", quantity: 3},
{ cat: 'EK-2', name:"test2",info:"nat"quantity: 1}
];
我在下面尝试过这样的操作,我有一组具有一些相似对象的对象。如何添加数量和创建独特的对象。下面我给出了我尝试过的内容。
var data = [{
cat: 'EK-1',
name: "test",
info: "mat",
quantity: 1
},
{
cat: 'EK-1',
name: "test",
info: "mat",
quantity: 1
},
{
cat: 'EK-1',
name: "test",
info: "mat",
quantity: 1
},
{
cat: 'EK-2',
name: "test2",
info: "nat",
quantity: 1
}
];
const products = Array.from(data.reduce((acc, {
cat,
quantity
}) =>
acc.set(cat, (acc.get(cat) || 0) + quantity),
new Map()
), ([cat, quantity]) => ({
cat,
quantity
}));
console.log(products);
【问题讨论】:
-
你试过reduce()吗?
-
很好,你有什么问题?你试过什么?你写了什么代码?您可以按照How to Ask 在此处提供minimal reproducible example 吗?你在哪里卡住?我们不是您的个人代码编写服务。
-
该属性称为
quantity,而不是qty,就像您在reduce 的解构中访问一样。 -
我已经更新了我的问题,,但是我怎样才能得到结果中的所有键和值
-
var data = [{ cat: 'EK-1', name: "test", info: "mat", 数量: 1 }, { cat: 'EK-1', name: "测试”,信息:“垫子”,数量:1 },{猫:'EK-1',名称:“测试”,信息:“垫子”,数量:1},{猫:'EK-2',名称:“test2”,信息:“nat”,数量:1 }] const transform = (data) => data.reduce((p, { cat, quantity }) => (p[cat] = (p[cat] || 0) + 数量, p), {}) console.log(transform(data))
标签: javascript node.js arrays nodes