热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算对象数组中的重复项并对位于对象中的值求和

我有一个看起来像这样的对象数组:constusers=[{name:John,gender:Male,orders:20},

我有一个看起来像这样的对象数组:

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);

我上面代码的输出是:

[{ gender: 'Male', count: 3 }, { gender: 'Female', count: 1 }]

谢谢你。

回答


您可以收集一个对象并从中获取值。


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; }







推荐阅读
author-avatar
Yomon-00
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有