Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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

  1. JavaScriptで純粋に別のliにクラス名を追加しますか?

    クラスを追加するには、forEach()をclassList.add()と一緒に使用します。 例 以下はコードです- <!DOCTYPE html> <html lang="en"> <head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">   &nb

  2. JavaScriptでツリー化するオブジェクトのフラット配列

    このようなオブジェクトの配列があるとします- const arr = [    { id: '1', name: 'name 1', parentId: null },    { id: '2', name: 'name 2', parentId: null },    { id: '2_1', name: 'name 2_1', parentId: '2' },    { id: '2_2