简体   繁体   English

Javascript 上的“未捕获的类型错误:无法设置未定义的属性”

[英]"Uncaught TypeError: Cannot set properties of undefined" on Javascript

While trying to add new elements to the array I have, I get the error "Uncaught TypeError: Cannot set properties of undefined (setting '1') " .在尝试向我拥有的数组添加新元素时,我收到错误“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?我该如何解决这个问题?

If you run this code snippet JSFiddle :如果您运行此代码片段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:控制台 output 是:

[[[[]]], [], []] // 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.如果使用arry[turn][i1][i2] ,则必须覆盖(预先初始化)所有可能的turni1值以避免错误。 Or, even better, to change the approach/algorithm completely.或者,更好的是,完全改变方法/算法。 Find cleaner way.寻找更清洁的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JavaScript Uncaught TypeError:无法设置未定义的属性“ -1” - JavaScript Uncaught TypeError: Cannot set property '-1' of undefined JavaScript - 未捕获的类型错误:无法设置未定义的属性 - JavaScript - Uncaught TypeError: Cannot set property of undefined Javascript Uncaught TypeError:无法设置未定义的属性 - Javascript Uncaught TypeError: Cannot set property of undefined 未捕获的类型错误:无法设置未定义的属性(设置“渲染”) - Uncaught TypeError: Cannot set properties of undefined (setting 'render') 未捕获的类型错误:无法设置未定义的属性(设置“isSubcon”) - Uncaught TypeError: Cannot set properties of undefined (setting 'isSubcon') 未捕获的类型错误:无法读取未定义的属性(读取“设置”) - Uncaught TypeError: Cannot read properties of undefined (reading 'set') 未捕获的类型错误:无法设置未定义的属性(设置“全名”) - Uncaught TypeError: Cannot set properties of undefined (setting 'full_name') 未捕获的类型错误:无法设置未定义的属性(设置“innerHTML”) - Uncaught TypeError: Cannot set properties of undefined (setting 'innerHTML') 未捕获的类型错误:无法读取未定义(读取“过滤器”)JavaScript 的属性 - Uncaught TypeError: Cannot read properties of undefined (reading 'filter') JavaScript JavaScript(React)- 未捕获的类型错误:无法读取未定义的属性(读取“样式”) - JavaScript(React)- Uncaught TypeError: Cannot read properties of undefined (reading 'style')
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM