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