This is an example of what I need to do:
var myarray = [5, 10, 3, 2]; var result1 = myarray[0]; var result2 = myarray[1] + myarray[0]; var result3 = myarray[2] + myarray[1] + myarray[0]; var result4 = myarray[3] + myarray[2] + myarray[1] + myarray[0];
so all that would output 5, 15, 18, 20
but instead of writing out all the vars like that, I want it to say something like:
var result = arrayitem + the sum of any previous items
Does that make sense? Is that possible? How do I do that?
cumulativeSum is the function value => sum += value , with sum initialized to zero. Every time it's called, sum is updated and will equal the previous value (output[n-1]) when called the next time (with input[n]).
A cumulative sum array is one whose value at each index is the sum of all previous indexes plus itself (e.g., [1,2,3,4] becomes [1,3,6,10] ). While doing multiple range updates, all we need is to put start & end identifiers in the array for each update and, at the end, sum them all together.
To get the sum of an array of numbers:Use the Array. reduce() method to iterate over the array. Set the initial value in the reduce method to 0 . On each iteration, return the sum of the accumulated value and the current number.
The definition of the cumulative sum is the sum of a given sequence that is increasing or getting bigger with more additions. The real example of a cumulative sum is the increasing amount of water in a swing pool. Example: Input: 10, 15, 20, 25, 30. Output: 10, 25, 45, 70, 100.
An elegant solution copied from Nina Scholz, using currying to access the previous value.
const cumulativeSum = (sum => value => sum += value)(0); console.log([5, 10, 3, 2].map(cumulativeSum));
cumulativeSum
is the function value => sum += value
, with sum
initialized to zero. Every time it's called, sum
is updated and will equal the previous value (output[n-1]) when called the next time (with input[n]).
Javascript's reduce
provides the current index, which is useful here:
var myarray = [5, 10, 3, 2]; var new_array = []; myarray.reduce(function(a,b,i) { return new_array[i] = a+b; },0); new_array // [5, 15, 18, 20]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With