![](/img/trans.png)
[英]How to find the index of an element in a multidimensional array by JavaScript/JQuery
[英]How to find the row and column of a specific element in a multidimensional array using javascript
我有这个8x8数组,应该代表一个棋盘。
var board = [['RS', 'H', 'RS', 'H', 'RS', 'H', 'RS', 'H'],
['BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS'],
['RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS'],
['BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS'],
['RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS'],
['BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS'],
['RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS'],
['F', ' RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS']
];
我想获取元素F的行和列号,我正在尝试使用4循环
function getF(board) {
var i, j;
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
if(board[i][j] == 'F'{
return {row:1, col:j};
我该如何获取所有H元素的索引?
您可以简化您的功能,例如:
function getCharIndexes(board, char) {
var i, j, collection = [];
for (i = 0; i < board.length; i++) {
for (j = 0; j < board[i].length; j++) {
if(board[i][j] == char) {
collection.push({row:1, col:j}); // should be {row: i, col: j}
}
}
}
return collection;
}
要获取“ F”调用,请执行以下操作: getCharIndexes(board, 'F');
要获取“ H”调用: getCharIndexes(board, 'H');
等等
您的代码中有一些语法错误。 除此之外,这还可以:
function getIndexesOf(matrix, obj) {
var i, j;
var ret = []
for (i = 0; i < matrix.length; i++) {
var line = matrix[i];
for (j = 0; j < line.length; j++) {
if(board[i][j] == obj) {
ret.push({row: i, col: j})
}
}
}
return ret;
}
这样,您可以通过传递要查找的对象(称为“ H”)来调用它:
getIndexesOf(board, 'H');
注意:
您在for循环中使用文字值。 最好使用矩阵的长度和所传递的线的长度。
在您的示例中,您将返回{row:1, col:j}
。 这是不正确的,即使在示例中也不符合您的目的。 在这种情况下,您将返回{row:i, col:j}
,因为i
持有行号,而返回固定的行号1则没有意义。
首先,您缺少if
语句和for
循环的闭包,我认为这是复制/粘贴问题。
接下来,我认为您的getF
函数不起作用,因为您将列返回为j
,但是行始终为1。要解决此问题,只需返回{ row: i, col: j }
。
最后,您可以使用相同的循环操作来获取所有的'H',但只需将它们保存在数组中,并在找到它们时,使用类似于以下内容的方法将它们附加: foo.push({ row: i, col: j });
其他答案几乎是正确的:
var board = [['RS', 'H', 'RS', 'H', 'RS', 'H', 'RS', 'H'],
['BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS'],
['RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS'],
['BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS'],
['RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS'],
['BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS'],
['RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS', 'BS'],
['F', ' RS', 'BS', 'RS', 'BS', 'RS', 'BS', 'RS']];
function getChar(board, c) {
var i, j, collection = [];
for (i = 0; i < board.length; i++) {
for (j = 0; j < board[i].length; j++) {
if(board[i][j] == c)
collection.push({row:i, col:j});
}
}
return collection;
}
console.log(getChar(board, "F"));
console.log(getChar(board, "H"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.