While trying to add new elements to the array I have, I get the error "Uncaught TypeError: Cannot set properties of undefined (setting '1')".
var arry = [[[[]]]],
i1 = 0,
i2 = 0,
intervalRate = 1000;
turn = 0, a = 10, b = 5;
for(i = 0; i < 2; i ) arry.push([]);
setInterval(() => {
arry[turn][i1][i2] = ([a, b]); //the error comes in this line
i2 ;
if(i2 % 5 == 0 && i2 != 0){
i1 ;
i2 = 0;
arry.push([]);
}
turn ;
if(turn == 3) turn = 0;
a = 5; b = 5;
}, intervalRate);
How can I solve this?
CodePudding user response:
If you run this code snippet JSFiddle:
var arry = [[[[]]]],
i1 = 0,
i2 = 0,
intervalRate = 1000;
turn = 0, a = 10, b = 5;
for(i = 0; i < 2; i ) arry.push([]);
console.log(arry);
console.log(arry[0][0]);
console.log(arry[1][0]);
Console output is:
[[[[]]], [], []] // 3 root elements
[[]] // 1st child of array[0];
undefined // 1st child of array[1]
So to fix, you would have to initialize all elements of all array dimensions, but the last one. If you use arry[turn][i1][i2]
, you have to cover (initialize upfront) for all possible values of turn
and i1
to avoid error. Or, even better, to change the approach/algorithm completely. Find cleaner way.