将以前的日期值与今天的日期相加

时间:2021-07-04 16:29:55

标签: javascript object ecmascript-6

我想计算以前的日期值到当前日期等等。这是我的脚本。

  • 我已经获取了初始 prevDayStock 的前一天股票价值,即 let prevStock = 21
let prevStock = 21; 
let stocksArr= [
  { date: '2021-06-30',stock: 4 },
  { date: '2021-07-01',stock: 5 },
  { date: '2021-07-02',stock: 2 },
  { date: '2021-07-03',stock: 1 },
  { date: '2021-07-04', stock: 5 },
  { date: '2021-07-05',stock: 3 },
  { date: '2021-07-06', stock: 4 },
  { date: '2021-07-07',stock: 1 },
  { date: '2021-07-08', stock: 4 }
]

stocksArr.reduce((acc, cur, idx, arr) => {
  const prod = idx === 0 ? 0 : arr[idx - 1].stock;
  const value = acc + cur.stock + prod;
  cur.stock = acc;
  return value;
}, prevStock); 
  console.log(stocksArr)

预期结果:

    [{ date: '2021-06-30',stock: 21 },
      { date: '2021-07-01',stock: 24 },
      { date: '2021-07-02',stock: 29 },
      { date: '2021-07-03',stock: 31 },
      { date: '2021-07-04', stock: 32 },
      { date: '2021-07-05',stock: 37 },
      { date: '2021-07-06', stock: 40 },
      { date: '2021-07-07',stock: 44 },
      { date: '2021-07-08', stock: 45 }]

解决它的正确解决方案是什么。

let prevStock = 21;
let stocksArr= [
  { date: '2021-06-30',stock: 4 },
  { date: '2021-07-01',stock: 5 },
  { date: '2021-07-02',stock: 2 },
  { date: '2021-07-03',stock: 1 },
  { date: '2021-07-04', stock: 5 },
  { date: '2021-07-05',stock: 3 },
  { date: '2021-07-06', stock: 4 },
  { date: '2021-07-07',stock: 1 },
  { date: '2021-07-08', stock: 4 }
]

stocksArr.reduce((acc, cur, idx, arr) => {
  const prod = idx === 0 ? 0 : arr[idx - 1].stock;
  const value = acc + cur.stock + prod;
  cur.stock = acc;
  return value;
}, prevStock); 
  console.log(stocksArr)

1 个答案:

答案 0 :(得分:2)

如果你想要累积结果,这就是答案

    var stocksArr= [
      { date: '2021-06-30',stock: 4 },
      { date: '2021-07-01',stock: 5 },
      { date: '2021-07-02',stock: 2 },
      { date: '2021-07-03',stock: 1 },
      { date: '2021-07-04', stock: 5 },
      { date: '2021-07-05',stock: 3 },
      { date: '2021-07-06', stock: 4 },
      { date: '2021-07-07',stock: 1 },
      { date: '2021-07-08', stock: 4 }
    ]
    
var result = stocksArr.reduce(function(r, a) {
  if (r.length > 0)
    a.stock += r[r.length - 1];
  r.push(a.stock);
  a['sum'] = a.stock
  return r;
}, [21]); // <-- pass intialValue to here

    
    console.log(stocksArr)

    [
  {
    "date": "2021-06-30",
    "stock": 25,
    "sum": 25
  },
  {
    "date": "2021-07-01",
    "stock": 30,
    "sum": 30
  },
  {
    "date": "2021-07-02",
    "stock": 32,
    "sum": 32
  },
  {
    "date": "2021-07-03",
    "stock": 33,
    "sum": 33
  },
  {
    "date": "2021-07-04",
    "stock": 38,
    "sum": 38
  },
  {
    "date": "2021-07-05",
    "stock": 41,
    "sum": 41
  },
  {
    "date": "2021-07-06",
    "stock": 45,
    "sum": 45
  },
  {
    "date": "2021-07-07",
    "stock": 46,
    "sum": 46
  },
  {
    "date": "2021-07-08",
    "stock": 50,
    "sum": 50
  }
]