使用JavaScript查找数量和总利润/亏损

问题描述 投票:-1回答:1

我有以下数据来计算总的卖/买数量以及利润/亏损,并且我正在使用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"
  } 

]

计算从最后一个数组到顶部。

javascript arrays
1个回答
0
投票

您可以使用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)
© www.soinside.com 2019 - 2024. All rights reserved.