Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对对象数组中的重复项进行计数,并对对象中的值求和_Javascript_Node.js_Arrays - Fatal编程技术网

Javascript 对对象数组中的重复项进行计数,并对对象中的值求和

Javascript 对对象数组中的重复项进行计数,并对对象中的值求和,javascript,node.js,arrays,Javascript,Node.js,Arrays,我有一个如下所示的对象数组: 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, to

我有一个如下所示的对象数组:

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

谢谢。

您可以使用对象进行收集并从中获取值

常数 用户=[{name:'John',gender:'Male',orders:20},{name:'Doe',gender:'Male',orders:8},{name:'Ada',gender:'femal',orders:10},{name:'David',gender:'Male',orders:30}], 结果=Object.valuesusers.reducer,{性别,顺序}=>{ r[gender]??={gender,count:0,totalOrders:0}; r[gender].count++; r[性别]。总订单+=订单; 返回r; }, {}; console.logresult;
.as console wrapper{max height:100%!important;top:0;}您可以使用对象进行收集并从中获取值

常数 用户=[{name:'John',gender:'Male',orders:20},{name:'Doe',gender:'Male',orders:8},{name:'Ada',gender:'femal',orders:10},{name:'David',gender:'Male',orders:30}], 结果=Object.valuesusers.reducer,{性别,顺序}=>{ r[gender]??={gender,count:0,totalOrders:0}; r[gender].count++; r[性别]。总订单+=订单; 返回r; }, {}; console.logresult; .作为控制台包装{最大高度:100%!重要;顶部:0;}