javascript - 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);
}
}
}
解决方案
在 for 循环中,如果满足条件,则将 void 函数的结果重新分配给原始有机体数组。
if (organismArray[col][row] == "*") {
organismArray = howManyOrganisms(col, row, letter);
}
“howManyOrganisms”函数从不返回任何内容,因此,您正在擦除原始的organismArray。
所以也许试试这个:
if (organismArray[col][row] == "*") {
howManyOrganisms(col, row, letter);
}
希望这可以帮助!
推荐阅读
- ffmpeg - ffmpeg 如何确定图像的大小并拉伸视频以适合它?
- cordova - Ionic 4:从另一个应用程序(图库/文件浏览器)向应用程序发送文件
- html - 如何让我的 CSS 媒体查询正常工作?
- javascript - 更新用户个人资料,而无需将任何内容更新到 Firestore
- python - Jupyter:InvocationException:未找到 GraphViz 的可执行文件
- scala - 如何将Scala Dataframe从宽转长并从宽转回长
- php - 如何解决错误“致命错误:require(): Failed opening required '../vendor/autoload.php' (include_path='C:\xampp\php\PEAR')?”
- python - 使用 Pandas 在 Python CGI 脚本中读取上传的 XLSX 文件
- regex - 反转括号内的两个字符串
- swift - 地理围栏 didExitRegion 从未被调用