在JavaScript中,我试图找到这个2D整数数组的所有匹配坐标:
在这个2D整数数组中,计算重叠的子数组:
每个图像表示一个2D JavaScript整数数组,黑色像素对应于1
,黄色像素对应于0
,但我以这种方式描述了这些数组,以便它们更容易可视化。
那么如何找到数组的所有匹配项呢
数组内部
下面是我正在尝试实现的函数:
findAllMatchesOfOne2DArrayInsideAnother2DArray(containedArray, containingArray){
//find all matching coordinates of containedArray inside containingArray, and return a 2D array of coordinates
}
发布于 2013-05-15 23:54:26
Here is a way来获取任何给定的二维数组在另一个二维数组中的所有匹配项。假设所有的子数组都具有相同的维数(与[[1,0,0],[1,0]]
完全不同)。
var x = [[0,1,0,0,0,0,0],
[1,1,1,0,0,1,0],
[0,1,0,0,1,1,1],
[0,0,0,0,0,1,0],
[0,0,1,0,0,0,0],
[0,1,1,1,0,0,0],
[0,0,1,0,0,0,0]];
var y = [[0,1,0],[1,1,1],[0,1,0]];
var res = [];
for (var i = 0; i < x.length - y.length + 1; i++) {
for (var k = 0; k < x[0].length - y[0].length + 1; k++) {
var count = 0;
for (var l = 0; l < y.length; l++) {
for (var m = 0; m < y[l].length; m++) {
count += Math.abs(y[l][m] - x[i + l][k + m]);
}
}
if (count === 0) {
res.push([i, k]);
}
}
}
数组res
将包含每个匹配的左上角的“坐标”。我相信你会找到性能更好的算法,但这个算法似乎是有效的:)
https://stackoverflow.com/questions/16576381
复制