Мне нужно выполнить кумулятивную сумму массива. При определенных условиях, мне нужно, чтобы быть прямо вперед, и нашел этот фрагмент кода отлично работает:Совокупная сумма массива с условием в другом массиве
cumul = sum.reduce(function (a, n) {
a.push((a.length > 0 ? a[a.length-1] : 0) + n);
return a;
}, [initial]);
cumul.shift();
Logger.log(cumul);
При входе в систему «cumul» я получаю результат мне нужно. Однако в других условиях IF() мне необходимо выполнить кумулятивную сумму, обеспечив определенное условие в другом массиве, содержащем даты, - если дата равна < = X, не добавляйте к суммарной сумме в этой итерации (показать предыдущую кумулятивное значение).
Любые идеи, как реализовать это? Похоже, что использование этой версии совокупной суммы не сработает, но я не уверен, что было бы другими способами.
Заранее благодарен! G
Мое первое предложение заключается в том, что вы конденсировать два структура данных в единицу. 'var arr = [{val: 7, date: '2014-10-31'}, {val: 3, date: '2014-11-01'}]' и затем перебирать одну структуру данных. Поскольку массивы 'javascript' на самом деле не массивы, для этого не существует штрафа за производительность. –
Для не условной совокупной суммы см. Http://stackoverflow.com/questions/20477177/creating-an-array-of-cumulative-sum-in-javascript - некоторые виды структур цикла и вспомогательные функции могут быть повторно использованы , – Paul