匹配 2D 数组中的连续值
Matching consecutive values in 2D array
我正在尝试弄清楚如何在 3D 数组中找到 2 个或匹配的连续值。我想我已经弄清楚了水平和垂直匹配,但如果相同的值存在于两个不同的行中,我将如何匹配,如以下列表数组 (myArray(:
| 1 | 2 | 2 | 0 |
| - | 2 | 0 | 1 |
| 1 | - | 0 | 1 |
在这个特定的 2D 数组中,myArray[0][1]、myArray[0][2] 和 myArray[1][1] 都与值 2 匹配。
这是我必须找到水平和垂直匹配的匹配项的 JavaScript:
for (i in myArray) {
for (j in myArray[i]) {
if (myArray[i][j] == myArray[i][j - 1] && myArray[i][j - 1] == myArray[i][j - 2] && myArray[i][j] != "-") {
// do something
}
if (i > 1) {
if (myArray[i][j] == myArray[i - 1][j] && myArray[i - 1][j] == myArray[i - 2][j] && myArray[i][j] != "-") {
// do something
}
}
}
}
我在这里走在正确的轨道上吗?我猜我可以混合两个 if 语句来找到匹配项,但我有点不知所措。
谢谢!
测试每个元素周围的交叉。
for (var y=0, yLen=myArray.length; y<yLen; y++){
for (var x=0, xLen=myArray[y].length; x<xLen; x++){
var matches = 0,
testing = myArray[y][x];
// test left
if (x>0 && myArray[y][x-1] === testing) matches++;
// test right
if ((x<myArray[y].length-1) && myArray[y][x+1] === testing) matches++;
// test above
if (y>0 && myArray[y-1][x] === testing) matches++;
// test below
if ((y<myArray.length-1) && myArray[y+1][x] === testing) matches++;
if (matches>=2){
console.log(y,x,' is the central or corner element of a 3-or-more group');
}
}
}
请记住,这只会返回 true 对于组的中心元素(3 个水平或 3 个垂直的中心元素,或组在两个方向上的角元素(
此外,将for .. in
用于数组也是一个坏主意,原因在为什么使用"for...在"数组迭代是一个坏主意?
相关文章:
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 连续两页返回Javascript
- 匹配 2D 数组中的连续值
- 如何做javascript连续滚动-自动加载
- firebase中有没有一种方法可以防止快速连续写入
- 从2D RGB阵列创建图像
- 我如何让我的脚本连续提交两个表单
- 构建画布RGB值的2D阵列
- 为什么用javascript覆盖2D数组的元素
- 如何限制同一个字符连续使用
- 订阅一个具有角度的websocket的连续数据
- Regex或javascript每X个连续单词中有一个单词
- 在2D数组中动态推送新列
- 2D Processingjs游戏中的冲突
- Node.js和Mongoose返回2D查询
- 如何检测每个连续字符与前一个字符相差最小字母差的字符序列(1)
- 砖石网格连续循环卷轴
- KeyDown不会'按住时不能连续开火
- 如何在javascript中创建一个空的2d数组?下面是我想要创建的一个示例
- 在连续第二次单击时禁用href