gpt4 book ai didi

javascript - 如何迭代二维数组中的 "box"

转载 作者:行者123 更新时间:2023-12-03 03:21:11 25 4
gpt4 key购买 nike

我试图在 JavaScript 中迭代一个二维数组,然后迭代二维数组中每个元素周围的“框”。也就是说,通过“上面的行”中的三个元素,该元素所在的“行”中的三个元素,然后是该元素所在的“行”“下面”的三个元素。我遇到了关于什么的问题与字面上的“边缘”情况有关。换句话说,我试图迭代 (o) 周围的 x:

[[x, x, x, o],
[x, (o), x, o],
[x, x, x, o]]

这是当 (o) 位于边缘时我尝试迭代的内容:

[[(o), x, o, o],
[x, x, o, o],
[o, o, o, o]]

关于如何在 JavaScript 中做到这一点有什么想法吗?

这是我到目前为止所拥有的:

//iterates through each cell
for(var i = 0; i < height; i++){
for(var j = 0; j < width; j++){
var counter = 0;
//iterates through a box around each cell
for(var k = i - 1; k <= i + 1; k++){
for(var l = j - 1; l <= j + 1 ; l++){
if(cells[k][l].status === "alive"){
counter++;
}
}
}

最佳答案

当 k >= height 或 l >= width 或 l 或 k 小于 0 时,您的代码将在两种类型的边缘情况下失败。要解决此问题,请在您使用的内部循环中要迭代元素周围的框,您可以使用 k < height 再次添加对边缘情况的检查和l < width 。同样在 if 条件下,您可以检查 if l >= 0k >= 0

for(var i = 0; i < height; i++){
for(var j = 0; j < width; j++){
var counter = 0;
//iterates through a box around each cell
for(var k = i - 1; k < height && k <= i + 1; k++){
for(var l = j - 1; l < width && l <= j + 1 ; l++){
if(l >= 0 && k >= 0 && cells[k][l].status === "alive"){
counter++;
}
}
}

关于javascript - 如何迭代二维数组中的 "box",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46569018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com