给定多维数组的坐标索引时,如何计算这些坐标?

时间:2017-09-18 00:11:02

标签: javascript arrays multidimensional-array

相反,我有一个函数可以为你提供输入坐标的索引。

function generateBoard(rows, cols, initialValue) {
let arr = [];
for(var i = 0; i < rows;i++){
    arr.push(new Array(cols).fill(initialValue))
}
return arr;
}  

如果给出:

const board = generateBoard(3,3," ");

它应该生成一个数组,[&#34;&#34;,&#34;&#34;,&#34;&#34;],[&#34;&#34;, &#34;&#34;,&#34;&#34;],[&#34;&#34;,&#34;&#34;,&#34;&#34;],示例坐标2,1应该打印出来7。

我们怎么写:

function indexToRowCol(board, i){}

如果indexToRowCol(board,8)的样本输入应该给出rows = x和cols = x的坐标?我不确定如何仅通过index参数计算行和列的值。

3 个答案:

答案 0 :(得分:1)

对于行号[i]除以板[0] .length,因为那是你必须在每一行中分配的元素数量并占据该值的下限,对于列,你必须找到最后一行中的剩余元素,所以< / p>

row = parseInt(i/board[0].length)column = i - row*board[0].length -1

function generateBoard(rows, cols, initialValue) {
let arr = [];
for(var i = 0; i < rows;i++){
arr.push(new Array(cols).fill(initialValue))
}
return arr;
}  

const board = generateBoard(3,3," ");

function indexToRowCol(board, i){
var row = parseInt(i/board[0].length);
var column = i - row*board[0].length - 1;

console.log(row);
console.log(column);
}

indexToRowCol(board, 8)

答案 1 :(得分:1)

function indexToRowCol(board, i){
  var row = parseInt(i/board[0].length);
  var col = i%board[0].length -1;
  return board[row][col];
}

答案 2 :(得分:0)

这实际上对我有用。

function indexToRowCol(board, i){
    var row = Math.floor((i/board.length));
    var col = (i - (row*(board.length)));

    return [row,col];
}   

我得到了其他一些反应的负整数,但这似乎阻止了这一点。