You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript报错:Cannot read properties of undefined (reading '0')排查求助

错误原因排查与解决方法

未捕获的类型错误:无法读取undefined的属性(读取'0')
在HTMLButtonElement.store_val1 (Intersection.html:84:46)
store_val1 @ Intersection.html:84

触发报错的代码:

for (var i = 0; i < arr3.length; i++) {
    for (var j = 0; j < arr3.length; j++) {
        for (var k = 0; k < arr3.length; k++) {
            a = arr3[i][j];
            b = arr3[i + 1][k]; // 84:46
            console.log(b);
            if (a == b) {
                arr4.push(a);
                console.log('Yes');
                // j++;
            }
        }
        k = 0;
    }
    j = 0;
}

错误原因

报错核心出在arr3[i + 1][k]这一行:
数组索引从0开始,当外层循环的i走到arr3.length - 1时,i + 1等于arr3.length,此时arr3[i + 1]是数组越界位置,值为undefined。试图读取undefined的第k个索引,就会抛出“无法读取undefined的属性'0'”的错误。

解决方法

修改外层循环的终止条件,确保i + 1不会超出数组最大索引范围:

for (var i = 0; i < arr3.length - 1; i++) {
    for (var j = 0; j < arr3.length; j++) {
        for (var k = 0; k < arr3.length; k++) {
            a = arr3[i][j];
            b = arr3[i + 1][k];
            console.log(b);
            if (a == b) {
                arr4.push(a);
                console.log('Yes');
                // j++;
            }
        }
    }
}

额外优化

代码里手动重置j = 0和k = 0属于冗余操作——for循环每次迭代都会重新初始化j和k的值,删掉这些代码不影响逻辑,还能让代码更简洁。

内容的提问来源于stack exchange,提问作者Crazy Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:05:22