在 JavaScript 中聚合記錄


假設我們有一個物件陣列,其中包含一些人進行的隨機交易資訊 −

const transactions = [{
   name: 'Rakesh',
   amount: 1500
}, {
      name: 'Rajesh',
      amount: 1200
}, {
      name: 'Ramesh',
      amount: 1750
}, {
      name: 'Rakesh',
      amount: 2100
}, {
      name: 'Mukesh',
      amount: 1100
}, {
      name: 'Rajesh',
      amount: 1950
}, {
      name: 'Mukesh',
      amount: 1235
}, {
      name: 'Ramesh',
      amount: 2000
}];

我們需要編寫一個函式,它接受這個陣列作為引數,對獨一無二的人的交易金額進行聚合並返回不同物件。

因此,讓我們為這個函式編寫程式碼 −

示例

const transactions = [{
   name: 'Rakesh',
   amount: 1500
}, {
      name: 'Rajesh',
      amount: 1200
}, {
      name: 'Ramesh',
      amount: 1750
}, {
      name: 'Rakesh',
      amount: 2100
}, {
      name: 'Mukesh',
      amount: 1100
}, {
      name: 'Rajesh',
      amount: 1950
}, {
      name: 'Mukesh',
      amount: 1235
}, {
      name: 'Ramesh',
      amount: 2000
}];
const aggregateArray = arr => {
   return arr.reduce((acc, val) => {
      const index = acc.findIndex(obj => obj.name === val.name);
      if(index !== -1){
         acc[index].amount += val.amount;
      }else{
         acc.push({
            name: val.name,
            amount: val.amount
         });
      };
      return acc;
   }, []);
};
console.log(aggregateArray(transactions));

輸出

控制檯中的輸出如下 −

[
   { name: 'Rakesh', amount: 3600 },
   { name: 'Rajesh', amount: 3150 },
   { name: 'Ramesh', amount: 3750 },
   { name: 'Mukesh', amount: 2335 }
]

更新時間: 26-08-2020

2K+ 瀏覽

開始你的 職業

透過完成本教程獲得證書

開始
廣告