首页 > 解决方案 > Javascript Uncaught TypeError:无法使用for循环读取未定义的属性'0'来搜索数组

问题描述

我正在做一个项目,我在 HTMl 中制作表格,然后使用 2D 数组在 javascript 中绘制表格。然后我做了一个函数,它找到一个 * 并将它们变成其他 * 接触它的字母。一旦完成,就是将字母更改为 B 并在数组中找到下一个 * 并将所有 * 接触到 B 等等。我的问题是我在数组中找到所有 * 的循环出现错误。有什么建议么?

 var organismArray = [
    ["*","*","_"],
    ["-","_","*"],
    ["-","*","*"]
]; 

function drawOrganism() {
    var letter = 'A';
    var Organisms = 0;
    for (var col = 0; col < 2; col++) {
        for (var row = 0; row < 2; row++) {
            if (organismArray[col][row] == "*") { // This is where the Error occurs.
                organismArray = howManyOrganisms(col, row, letter);
                letter++;
                Organisms++;


            }`
        }
    }
    console.log(organismArray);
}
function howManyOrganisms(col,row,letter) {
    organismArray[col][row] = letter;


    if (col + 1 < organismArray.length) {
        if (organismArray[col + 1][row] == "*") {
            howManyOrganisms(col + 1, row, letter);
        }
    }
    if (col - 1 >= 0) {
        if (organismArray[col - 1][row] == "*") {
            howManyOrganisms(col-1, row, letter);
        }
    }
    if (row - 1 >= 0) {
        if (organismArray[col][row - 1] == "*") {
            howManyOrganisms(col, row - 1, letter);
        }
    }
    if (row + 1 < organismArray[col].length) {
        if (organismArray[col][row + 1] == "*") {
            howManyOrganisms(col, row + 1, letter);
        }
    }
}

标签: javascript

解决方案


在 for 循环中,如果满足条件,则将 void 函数的结果重新分配给原始有机体数组。

if (organismArray[col][row] == "*") {
  organismArray = howManyOrganisms(col, row, letter);
}

“howManyOrganisms”函数从不返回任何内容,因此,您正在擦除原始的organismArray。

所以也许试试这个:

if (organismArray[col][row] == "*") {
   howManyOrganisms(col, row, letter);
}

希望这可以帮助!


推荐阅读