0

I want to fill an not completed array. I will show an example:

var main = [
{ "id":"0", "value":500 },
{ "id":"3", "value":300 }
]

var fill = []


for (i = 0 ; i < main.length; i++){
    fill[main[i].id] = main[i].value
}

console.log(fill)

How do i fill these empty arrays with 0 ?

Thanks!

Johnson
  • 1,396
  • 6
  • 17
  • 36

3 Answers3

1

Start with a pre-filled array:

var main = [
{ "id":"0", "value":500 },
{ "id":"3", "value":300 }
]

var fill = new Array(4).fill(0);


for (i = 0 ; i < main.length; i++){
    fill[main[i].id] = main[i].value
}

console.log(fill)
Jamiec
  • 133,658
  • 13
  • 134
  • 193
  • Thats works well man, but this "id" comes to me dynamically, there is a way to fill the final `fill` var with zero's? – Johnson Oct 05 '17 at 15:56
1

If you want a solution that works even if you don't know the max size of the array you will fill, you can try adding this at the end:

fill.map(function (el) {
  return el === undefined ? 0 : el; 
});

Or in a ES6+ environment:

fill.map(el => el === undefined ? 0 : el);
1

if you dont know how long the array is, i would do it like this

 var main = [
{ "id":"0", "value":500 },
{ "id":"3", "value":300 }
]

var fill = []
for (var i = 0 ; i < main.length; i++){
    fill[main[i].id] = main[i].value
}
for (var j = 0 ; j < fill.length; j++){
    if(fill[j] === undefined){
        fill[j] = 0
    }
}
console.log(fill)