Javascript 二维阵列中邻域坐标的获取

Javascript 二维阵列中邻域坐标的获取,javascript,jquery,arrays,multidimensional-array,Javascript,Jquery,Arrays,Multidimensional Array,我正在寻找一种方法来获得二维数组中邻域的坐标。 我面临的问题是,我想定义远邻的数量。 我知道如何使用如下向量获得8个近邻: var distance = 1; var top_left = array[x-distance ][y-distance ]; ……等等。但是我想得到更广泛的邻居,就像在这个代码片段中一样。 var Move=function(){ var=这个; 此.grid={ 宽度:12, 身高:12 }; this.showmovabletiles=函数(){ var m

我正在寻找一种方法来获得二维数组中邻域的坐标。 我面临的问题是,我想定义远邻的数量。 我知道如何使用如下向量获得8个近邻:

var distance = 1;
var top_left = array[x-distance ][y-distance ];
……等等。但是我想得到更广泛的邻居,就像在这个代码片段中一样。

var Move=function(){
var=这个;
此.grid={
宽度:12,
身高:12
};
this.showmovabletiles=函数(){
var movableTiles=3;
var row=$(this.data('row');
var tile=$(this.data('tile');
$('.tile').removeClass('moveable');
$('#grid.tile').filter(函数(){

返回Math.abs($(this).data('row')-row)您可以使用
slice
从2d数组中剪切块。要确定需要哪些部分,请计算该区域中的行和列

假设您在
x:3,y:5处有一个点,并且希望在该位置周围有一个
size:2
的区域,您将计算:

var topRow = y - size;
var bottomRow = y + size;
var leftColumn = x - size;
var rightColumn = x + size;
现在,您可以使用
row.slice(leftColumn,rightColumn+1)

下面的示例显示了它是如何完成的,但我没有合并您的确切示例。此外,对于太接近网格边缘的坐标无法处理所需大小的坐标,它也不起作用。我将留给您来解决这个问题。(另外,它在ES6中)

const getArea=(x,y,s,grid)=>{
常数topRow=y-s;
const bottomRow=y+s;
常数leftCol=x-s;
常数rightCol=x+s;
常量网格面积=[];
for(设r=topRow;r
“abcdefghijklmnopqrstuvwxyz”[i]+(j));
};
函数makeGrid(w,h){
返回数组.from(数组(h),(z,i)=>makeRow(i,w))
};
功能日志网格(网格){
log(grid.map(r=>r.join(“|”);

}
代码片段没有帮助我理解您试图实现的目标这是您当前使用的代码中的相关逻辑吗?
$('#grid.tile').filter(function(){return Math.abs($(this).data($(row')-row)除了返回二维数组中的坐标之外,这个片段还不错;)我想我必须了解slice函数,但它看起来是一个合法的答案。谢谢