我有以下数据来计算总的卖/买数量以及利润/亏损,并且我正在使用JSONPath来计算数组。如何与本机JavaScript一起使用以查找数量总计和利润/亏损总额。
data[?(@.side === "buy")].qty
data[?(@.side === "sell")].qty
[
{
"price": 1373.1,
"qty": 2,
"side": "sell"
},
{
"price": 1375.3,
"qty": 1,
"side": "buy"
},
{
"price": 1376,
"qty": 1,
"side": "buy"
},
{
"price": 1373.8,
"qty": 1,
"side": "sell"
},
{
"price": 1363.7,
"qty": 1,
"side": "buy"
},
{
"price": 1361,
"qty": 1,
"side": "buy"
},
{
"price": 1357.9,
"qty": 1,
"side": "sell"
},
{
"price": 1362.7,
"qty": 1,
"side": "sell"
},
{
"price": 1362,
"qty": 1,
"side": "buy"
}
]
计算从最后一个数组到顶部。
您可以使用Array.prototype.reduce()
:
const src = [{"price":1373.1,"qty":2,"side":"sell"},{"price":1375.3,"qty":1,"side":"buy"},{"price":1376,"qty":1,"side":"buy"},{"price":1373.8,"qty":1,"side":"sell"},{"price":1363.7,"qty":1,"side":"buy"},{"price":1361,"qty":1,"side":"buy"},{"price":1357.9,"qty":1,"side":"sell"},{"price":1362.7,"qty":1,"side":"sell"},{"price":1362,"qty":1,"side":"buy"}]
result = src.reduce((r,{price,qty,side}) => ({
qty: (r.qty||0)+qty,
profit: side == 'sell' ? (r.profit||0)+price : (r.profit||0)-price
}) , {})
console.log(result)