【发布时间】:2017-12-23 09:27:08
【问题描述】:
我正在寻找一种方法来获取二维数组中邻居的坐标。 我面临的问题是我想定义远邻的数量。 我知道如何使用以下向量获得直接的 8 个邻居:
var distance = 1;
var top_left = array[x-distance ][y-distance ];
...等等。但我想在这段代码 sn-p 中获得更广泛的邻居。
var Move = function() {
var that = this;
this.grid = {
width: 12,
height: 12
};
this.showMoveableTiles = function() {
var movableTiles = 3;
var row = $(this).data('row');
var tile = $(this).data('tile');
$('.tile').removeClass('moveable');
$('#grid .tile').filter(function() {
return Math.abs($(this).data('row') - row) <= movableTiles && Math.abs($(this).data('tile') - tile) <= movableTiles && !($(this).data('row') == row && $(this).data('tile') == tile)
}).addClass('moveable');
};
};
var makeGrid = function(width, height) {
var tiles = '';
for (var row = 0; row < height; row++) {
for (var tile = 1; tile <= width; tile++) {
tiles += '<div class="tile" data-tile="' + tile + '" data-row="' + (row + 1) + '"></div>';
}
}
$('#grid').append(tiles);
};
var move = new Move();
makeGrid(10, 10);
$(document).on('mousedown', '.tile', move.showMoveableTiles);
#grid {
width: 300px;
cursor: pointer;
}
.tile {
width: 30px;
height: 30px;
background-color: #777;
outline: 1px solid goldenrod;
float: left;
}
.tile:hover {
background-color: #999;
}
.moveable {
background-color: #add8e6;
}
.moveable:hover {
background-color: #c8ebf7;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="grid"></div>
【问题讨论】:
-
代码 sn-p 无法帮助我理解您想要实现的目标
-
这是您当前使用的代码中的相关逻辑吗?
$('#grid .tile').filter(function() { return Math.abs($(this).data('row') - row) <= movableTiles && Math.abs($(this).data('tile') - tile) <= movableTiles && !($(this).data('row') == row && $(this).data('tile') == tile) }).addClass('moveable');这似乎是合理的。它不工作吗?更改正在分析的 $(this) 磁贴时是否忘记删除“可移动”类? -
这个sn-p很好,除了返回二维数组中的坐标;)
标签: javascript jquery arrays multidimensional-array