簡體   English   中英

計算對象數組中的重復項並對對象中的值求和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM