Javascript未捕获类型错误:无法读取属性';0';使用for循环搜索数组时未定义的

Javascript未捕获类型错误:无法读取属性';0';使用for循环搜索数组时未定义的,javascript,Javascript,我正在从事一个项目,在这个项目中,我用HTMl制作了一个表格,然后用javascript使用2D数组绘制表格。然后我做了一个函数,找到一个*并将它们转换成字母,在其他*接触它的地方。完成后,将字母更改为B,并在数组中找到下一个*并将所有*接触它的字母更改为B,依此类推。我的问题是,查找数组中所有*的循环出现错误。有什么建议吗 var organismArray = [ ["*","*","_"], ["-","_","*"], ["-","*","*"] ]; fu

我正在从事一个项目,在这个项目中,我用HTMl制作了一个表格,然后用javascript使用2D数组绘制表格。然后我做了一个函数,找到一个*并将它们转换成字母,在其他*接触它的地方。完成后,将字母更改为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);
        }
    }
}
var-marray=[
["*","*","_"],
["-","_","*"],
["-","*","*"]
]; 
功能{
var字母='A';
var=0;
对于(变量col=0;col<2;col++){
对于(变量行=0;行<2;行++){
如果(OrganiMarray[col][row]==“*”){//这就是发生错误的地方。
Organizary Marray=组织的数量(列、行、字母);
字母++;
生物体++;
}`
}
}
控制台日志(Marray);
}
函数HOWMANY组织(列、行、字母){
Marray[col][row]=字母;
if(柱+1<马里雷长度){
如果(Y[col+1][row]==“*”){
HowmanyOrganism(列+1,行,字母);
}
}
如果(列-1>=0){
如果(第1列[行]==“*”){
HowmanyorOrganism(列1,行,字母);
}
}
如果(第1行>=0){
如果(MARRAY[col][row-1]==“*”){
HowmanyOrganism(列,第1行,字母);
}
}
if(行+1
在for循环中,如果满足条件,则将void函数的结果重新分配给原始数组

if (organismArray[col][row] == "*") {
  organismArray = howManyOrganisms(col, row, letter);
}
“HowmanyOrganism”函数从不返回任何内容,因此,您正在擦除原始Organism

所以不妨试试这个:

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

希望这有帮助

在for循环中,如果满足条件,则将void函数的结果重新指定给原始数组

if (organismArray[col][row] == "*") {
  organismArray = howManyOrganisms(col, row, letter);
}
“HowmanyOrganism”函数从不返回任何内容,因此,您正在擦除原始Organism

所以不妨试试这个:

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

希望这有帮助

howManyOrganisms()
函数中缺少
return
关键字,因此此行:

organismArray = howManyOrganisms(col, row, letter);
未定义的
分配给
组织机构
。您必须将
return
添加到每个重复调用以及
howManyOrganisms()
函数的末尾,因为它并不总是以
if
中的一个结尾。试试这个:

var-marray=[
["*","*","_"],
["-","_","*"],
["-","*","*"]
]; 
drawOrganism();
功能{
var字母='A';
var=0;
对于(变量col=0;col<2;col++){
对于(变量行=0;行<2;行++){
如果(列[列]==“*”){
Organizary Marray=组织的数量(列、行、字母);
字母++;
生物体++;
}
}
}
控制台日志(Marray);
}
函数HOWMANY组织(列、行、字母){
控制台日志(“工作”);
Marray[col][row]=字母;
if(柱+1<马里雷长度){
如果(Y[col+1][row]==“*”){
返回多少个组织(列+1,行,字母);//返回此处
}
}
如果(列-1>=0){
如果(第1列[行]==“*”){
return howmanyorganism(col-1,row,letter);//返回此处
}
}
如果(第1行>=0){
如果(MARRAY[col][row-1]==“*”){
返回HowmanyOrganism(列,第1行,字母);//返回此处
}
}
if(行+1}
您在
howManyOrganisms()
函数中缺少
return
关键字,因此此行:

organismArray = howManyOrganisms(col, row, letter);
未定义的
分配给
组织机构
。您必须将
return
添加到每个重复调用以及
howManyOrganisms()
函数的末尾,因为它并不总是以
if
中的一个结尾。试试这个:

var-marray=[
["*","*","_"],
["-","_","*"],
["-","*","*"]
]; 
drawOrganism();
功能{
var字母='A';
var=0;
对于(变量col=0;col<2;col++){
对于(变量行=0;行<2;行++){
如果(列[列]==“*”){
Organizary Marray=组织的数量(列、行、字母);
字母++;
生物体++;
}
}
}
控制台日志(Marray);
}
函数HOWMANY组织(列、行、字母){
控制台日志(“工作”);
Marray[col][row]=字母;
if(柱+1<马里雷长度){
如果(Y[col+1][row]==“*”){
返回多少个组织(列+1,行,字母);//返回此处
}
}
如果(列-1>=0){
如果(第1列[行]==“*”){
return howmanyorganism(col-1,row,letter);//返回此处
}
}
如果(第1行>=0){
如果(MARRAY[col][row-1]==“*”){
返回HowmanyOrganism(列,第1行,字母);//返回此处
}
}
if(行+1}
非常感谢您!!这就解决了!非常感谢你!!这就解决了!多谢各位