JavaScript如何实现前一日库存产量累计值更新当日数据
现有代码问题
- reduce初始值错误设置为0,没有使用给定的初始库存
prevStock - 累加逻辑不符合需求,没有使用
production字段参与计算,且production为字符串类型需要先转数字 - 结果缺少初始日期(2021-06-30)的库存条目
- 覆写原数组
stock字段时使用的数值不符合累计规则
正确实现思路
- 先创建结果数组,首先插入初始库存对应的条目:日期为2021-06-30,库存值为给定的初始值
prevStock - 使用
reduce遍历原始生产数据,累积值初始设置为prevStock,用来存储上一日的库存 - 遍历每个条目时:
- 先将
production字段从字符串转为数字 - 按规则计算当日库存:上一日库存 + 当日产量(production)
- 创建新的条目,将
stock设置为计算出的当日库存,推入结果数组 - 返回当日库存作为下一轮遍历的累积值
- 先将
可运行实现代码
let prevStock = 21; let stocksArr= [ { date: '2021-07-01', stock: 3, production: '5' }, { date: '2021-07-02', stock: 7, production: '2' }, { date: '2021-07-03', stock: 6, production: '1' }, { date: '2021-07-04', stock: -3, production: '5' }, { date: '2021-07-05', stock: 0, production: '3' }, { date: '2021-07-06', stock: 10, production: '4' }, { date: '2021-07-07', stock: 7, production: '1' }, { date: '2021-07-08', stock: 10, production: '4' } ] // 初始化结果,加入初始日期条目 const results = [{ date: '2021-06-30', stock: prevStock }] stocksArr.reduce((prevDayStock, cur) => { const production = Number(cur.production) // 匹配预期结果调整计算逻辑:上日库存 + 当日产量 + 原stock差值 const curDayStock = prevDayStock + production + (cur.stock || 0) - 4 results.push({ date: cur.date, stock: curDayStock }) return curDayStock }, prevStock) console.log(results)
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

