Я хотел бы, чтобы накопленные значения производства за предыдущий день + носок обновили сегодняшнюю дату.
Я реализовал приведенные ниже фрагменты как работающие, как и ожидалось, но начальное значение, которое должно занять первый день, а затем сегодня запас + производство = следующая дата, так далее
let prevStock = 20;
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' }
]
stocksArr.reduce((acc, cur) => {
const newArr = acc + cur.stock;
cur.stock = acc;
return newArr;
}, 0);
ожидаемые результаты:
results= [
{ date: '2021-06-30', stock: 21},
{ date: '2021-07-01', stock: 25},
{ date: '2021-07-02', stock: 30},
{ date: '2021-07-03', stock: 32},
{ date: '2021-07-04', stock: 33},
{ date: '2021-07-05', stock: 38},
{ date: '2021-07-06', stock: 41},
{ date: '2021-07-07', stock: 45},
{ date: '2021-07-08', stock: 56}
]
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' }
]
stocksArr.reduce((acc, cur) => {
const newArr = acc + cur.stock;
cur.stock = acc;
return newArr;
}, 0);
console.log(stocksArr)
Каков правильный подход к ее решению?
Почему запас на 30 июня 2021 г. должен быть равен 21, а не 0, как показано в первом объекте
{ date: '2021-06-30', stock: 0, production: '4' },
?сумма запасов + производство за предыдущий день, я получаю базу данных и инициализирую ее. поэтому у меня есть запасы предыдущего дня + производство
@HereticMonkey Итак, на основе запасов + производства за предыдущий день необходимо рассчитать.
Что ж, я бы предложил вам использовать этот
prevStock
в качестве начального значения для вызоваreduce
(второй аргумент, где вы в настоящее время передаете 0. Кроме того, вам нужно будет добавить производство вnewArr
, если вы хотите, чтобы это для добавления (я бы преобразовал его в число, возможно, использовалparseFloat(cur.production)
илиparseInt
, если эти значения всегда являются целыми значениями).Почему вы хотите использовать сокращение для этого? Кроме того, данные в
stocksArr
иresult
кажутся бессмысленными, откуда берется2021-06-30
??