我有这个数组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元素的索引?
答案 0 :(得分:1)
您可以简化您的功能,如:
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');
等
答案 1 :(得分:0)
您的代码中存在一些语法错误。除此之外,这将做:
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;
}
通过这种方式,您可以调用它来传递您想要查找的对象(作为您的&#39; H&#39;):
getIndexesOf(board, 'H');
请注意:
您在for循环中使用了文字值。最好使用矩阵的长度和传入的线条。
在您的示例中,您将返回{row:1, col:j}
。这是不正确的,即使在示例中也没有。在这种情况下,您将返回{row:i, col:j}
,因为i
包含行号,并且返回固定行号为1没有意义。
答案 2 :(得分:0)
首先,您错过了if
语句和for
循环的闭包,我认为这是一个复制/粘贴问题。
接下来,我认为您的getF
函数不起作用,因为您将列返回为j
,但该行始终为1.要解决此问题,请返回{{1}而不是。
最后,您可以使用相同的循环操作来获取所有'H',但只需将它们保存在一个数组中,当您找到它们时,使用类似于{ row: i, col: j }
答案 3 :(得分:0)
其他答案几乎是正确的:
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"));