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

JavaScriptで同様のキーを持つ配列値から合計


たとえば、ある会社が一定期間に売買した株式に関するデータを含む配列を次に示します。

const transactions = [
   ['AAPL', 'buy', 100],
   ['WMT', 'sell', 75],
   ['MCD', 'buy', 125],
   ['GOOG', 'sell', 10],
   ['AAPL', 'buy', 100],
   ['AAPL', 'sell', 100],
   ['AAPL', 'sell', 20],
   ['DIS', 'buy', 15],
   ['MCD', 'buy', 10],
   ['WMT', 'buy', 50],
   ['MCD', 'sell', 90]
];

このデータを取り込んで、キーの在庫名('AAPL'、'MCD'など)と値を持つ配列のオブジェクトを2つの数値の配列として返す関数を記述します。ここで、最初の要素は合計購入額を表し、2番目の要素は総売り。したがって、これを行うためのコードは-

になります。

const transactions = [
   ['AAPL', 'buy', 100],
   ['WMT', 'sell', 75],
   ['MCD', 'buy', 125],
   ['GOOG', 'sell', 10],
   ['AAPL', 'buy', 100],
   ['AAPL', 'sell', 100],
   ['AAPL', 'sell', 20],
   ['DIS', 'buy', 15],
   ['MCD', 'buy', 10],
   ['WMT', 'buy', 50],
   ['MCD', 'sell', 90]
];
const digestTransactions = (arr) => {
   return arr.reduce((acc, val, ind) => {
      const [stock, type, amount] = val;
      if(acc[stock]){
         const [buy, sell] = acc[stock];
         if(type === 'buy'){
            acc[stock] = [buy+amount, sell];
         }else{
            acc[stock] = [buy, sell+amount];
         }
         }else{
            if(type === 'buy'){
               acc[stock] = [amount, 0];
            }else{
               acc[stock] = [0, amount];
         }
      }
      return acc;
   }, {});
};
console.log(digestTransactions(transactions));

出力

コンソールの出力は-

になります
{
   AAPL: [ 200, 120 ],
   WMT: [ 50, 75 ],
   MCD: [ 135, 90 ],
   GOOG: [ 0, 10 ],
   DIS: [ 15, 0 ]
}

  1. JavaScript array.values()

    JavaScriptのarray.values()は、指定された配列のすべての値を含むイテレータオブジェクトを返します。 以下は、array.values()関数のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />

  2. JavaScriptを使用した配列内のネストされたオブジェクト値の合計

    以下は、JavaScriptを使用して配列内のネストされたオブジェクト値を合計するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <st