为了账号安全,请及时绑定邮箱和手机立即绑定

将变量分配给二维数组的索引

将变量分配给二维数组的索引

达令说 2021-06-28 12:47:05
我试图将一个变量分配给一个二维数组的索引,然后我将使用这个变量在二维数组周围移动它。例如let p = grid[0][0],然后,我会希望能够将其移动到grid[1][0],grid[1][5]等,但我正在与下面的代码未定义的变量返回值:const intiateGrid = (x) => {    grid = new Array(x);    for (let i = 0; i < grid.length; i++) {        grid[i] = new Array(x);    }    return grid; }let grid = []intiateGrid(10);let p = grid[0][0];console.log(p);  
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

对于初学者,您永远不会将结果分配intiateGrid(10)给网格。应该是let grid = intiateGrid(10)。代码也有更多问题,但请让我了解更多。例如应该intiateGrid(number)创建一个方阵?初始值应该是多少?此外,不要在循环时改变矩阵。


const grid = intiateGrid(10);


const player = {

  rowIndex: 0,

  colIndex: 0

}


//player starts at [0][0]

movePlayer(0, 0)


function intiateGrid(x) {

  const arr = new Array(x).fill(0); // array with x zeros

  const grid = arr.map(element => new Array(x).fill('O')) // array with x arrays, each with x zeros.

  return grid;

}


function movePlayer(row, col) {

  grid[row][col] = 'P';


  //set -1 to previous location

  grid[player.rowIndex][player.colIndex] = 'X'


  //update player location

  player.rowIndex = row;

  player.colIndex = col;


  console.log(`Player is at [${player.rowIndex}][${player.colIndex}]`)

}


movePlayer(1,0);

movePlayer(1,1);

movePlayer(1,2);

movePlayer(1,3);

movePlayer(2,3);


grid.forEach(row => console.log(row.join(' | ')))


查看完整回答
反对 回复 2021-07-08
?
ITMISS

TA贡献1871条经验 获得超8个赞

从您的问题中并不完全清楚,但是:


例如,let p = grid[0][0]然后我希望能够将其移动到 grid[1][0]、grid[1][5] 等。


使您看起来好像要创建某种指向二维数组结构中某个位置的“指针”。没有真正的方法可以用一个简单的值来实现这一点。一种方法是使用对象:


let p = { x: 0, y: 0 };

然后你可以创建函数来使用这样的对象来返回一个网格单元:


function getCell(pointer) {

  return grid[pointer.x][pointer.y];

}


function setCell(pointer, value) {

  grid[pointer.x][pointer.y] = value;

}

除了像这两个示例那样将其隐藏在函数内部之外,您最终无法避免使用两个单独的数字来显式索引到二维结构中。


查看完整回答
反对 回复 2021-07-08
  • 3 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信