我试图获得总买入和总卖出的阵列。但是,很难找到办法。
我遍历数组,但无法显示名称买卖的总和。
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/