我想计算以前的日期值到当前日期等等。这是我的脚本。
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)
答案 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
}
]