How to set value in array depending on previous value of array

I’ve got a simple problem, but I’m struggling to find the easiest solution without transforming the array a hundred times.
I want to do a simple stacked graph in google sheets, with weeks on X and values on Y. I got the values for each week, but only for weeks, that have a value.

The values are all calculations I’ve done with google apps script/ js.

person1 = [[2019/37,2], [2019/42,3]] and so on, for multiple persons and for 80 weeks in total.

The num value is the total value after each week. So I want the array to be filled up with the missing weeks. Therefore I mapped this to another array, where I have all the weeks but no values, giving these weeks the value 0:

person1= [[2019/37,2],[2019/38,0],[2019/39,0],…,[2019/42,3],[2019/43,0],[2019/44,0],…]

This of course does not fit to see a progress in the graph.
So I need something to set the weeks, which were filled up, to the previous value, resulting in

person1= [[2019/37,2],[2019/38,2],[2019/39,2],…,[2019/42,3],[2019/43,3],[2019/44,3],…]

Looping through this and setting the values with something like person[i][1] == person[i-1][1] seems not to be a good practice of course.
So, what would be the best way to achieve this? I’m kind of stuck with this now, I feel like I don’t see the forest for the trees.

Thanks in advance!

code:

let valueArray =  [[2019/37,2], [2019/42,3]]
let weeksArray = [2019/38,2019/39,2019/40,2019/41...]
//find missing weeks
let notFound = weeksArray.filter(el => valueArray.includes(el) == false).map(x => [x,0]);

//concat and sort
let outArray = arr.concat(notFound).sort((a,b)=> a[0].localeCompare(b[0]));

//output:
//[[2019/37,2],[2019/38,0],[2019/39,0],...,[2019/42,3],[2019/43,0],[2019/44,0],...]

66 thoughts on “How to set value in array depending on previous value of array”

Leave a Comment