我试图获得总买入和总卖出的阵列。但是,很难找到办法。

我遍历数组,但无法显示名称买卖的总和。

const orders = [
  ['AAPL', 'buy', 100],
  ['GOOG', 'sell', 10],
  ['AAPL', 'buy', 100],
  ['AAPL', 'sell', 100],
  ['AAPL', 'sell', 20],
];

function transform(orders) {
		const result = {};
    orders.forEach(element => {

    })
    return result;
}
<div id="result"></div>


我想要像这样的输出:
/*
result = {
    // total_buy, total_sell
    'AAPL': [ 200, 120 ],
    'GOOG': [ 0, 10]
}
*/

任何帮助将不胜感激。

最佳答案

使用Array.reduce并检查第二个条目(操作)以将金额添加到正确的位置:

const orders = [
  ["AAPL", "buy", 100],
  ["GOOG", "sell", 10],
  ["AAPL", "buy", 100],
  ["AAPL", "sell", 100],
  ["AAPL", "sell", 20]
];

const result = orders.reduce((acc, [key, action, amount]) => {
  acc[key] = acc[key] || [0, 0];
  if (action === "buy") acc[key][0] += amount;
  if (action === "sell") acc[key][1] += amount;
  return acc;
}, {});

console.log(result);

关于javascript - 来自数组JavaScript的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60403417/

10-11 22:47