【发布时间】:2016-12-23 04:12:32
【问题描述】:
在这里构建生命游戏,并使用一个函数循环遍历一个单元格的所有邻居并对分数求和(每个单元格为 0 或 1)。板由二维数组表示。通常一个小区有8个邻居。问题是板角的单元格只有 3 个邻居,而侧面的单元格有 5 个。如果我使用下面的代码循环遍历数组,一些邻居在数组中返回未定义。我想将 undefined 转换为 0 并用它来总结分数,但我得到了错误:
未捕获的类型错误:无法读取未定义的属性“-1”
感谢您的帮助!
var array = [
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1]
]
for(var i=0; i < array.length; i++){
for(var j=0; j < array[i].length; j++){
var totalScore = 0;
var scores = [
//i = row in loop
//j = column nested loop
array[i-1][j-1],
//upper left corner
array[i-1][j],
//top side
array[i-1][j+1],
//upper right corner
array[i][j-1],
//left side
array[i][j+1],
//right side
array[i+1][j-1],
//bottom left corner
array[i+1][j],
//bottom side
array[i+1][j+1]
//bottom right corner
];
scores.forEach(function(item){
var score = item;
if(score === "undefined"){
score = 0;
}
totalScore += score;
})
console.log(totalScore);
}
}
【问题讨论】:
-
array[i-1][j-1]将在数组中查找第一次迭代中不存在的-1索引。 -
array[i+1][j+1]将寻找10th index,这在上次迭代中也不存在。 -
谢谢,但是当元素不存在时如何设置分数为0?
-
element doesn't exist是什么意思? -
用 2 个额外的行和列创建数组,然后只使用不在边缘的数组。
标签: javascript arrays algorithm loops conways-game-of-life