[英]Count duplicates in an array of objects and sum up values located in the objects
我有一个看起来像这样的对象数组:
const users = [{name: 'John', gender: 'Male', orders: 20},
{name: 'Doe', gender: 'Male', orders: 8},
{name: 'Ada', gender: 'Female', orders: 10},
{name: 'David', gender: 'Male', orders: 30}];
我需要计算重复性别的数量并根据对象中的性别总结订单数量。 我希望最终的数组看起来像这样:
[{gender: 'Male', count: 3, totalOrders: 58}, {gender: 'Female', count: 1, totalOrders: 10}]
这是我到目前为止的代码:
const usersGender = users.map((user) => user.gender);
const result = Object.values(usersGender.reduce((a, b) => {
a[b] = a[b] || [b, 0];
a[b][1]++;
return a;
},{})).map(item => ({gender: item[0], count : item[1]}));
console.log(result);
上面代码中的我的 output 是:
[{ gender: 'Male', count: 3 }, { gender: 'Female', count: 1 }]
谢谢你。
您可以使用 object 收集并从中获取值。
const users = [{ name: 'John', gender: 'Male', orders: 20 }, { name: 'Doe', gender: 'Male', orders: 8 }, { name: 'Ada', gender: 'Female', orders: 10 }, { name: 'David', gender: 'Male', orders: 30 }], result = Object.values(users.reduce((r, { gender, orders }) => { r[gender]??= { gender, count: 0, totalOrders: 0 }; r[gender].count++; r[gender].totalOrders += orders; return r; }, {})); console.log(result);
.as-console-wrapper { max-height: 100%;important: top; 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.