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

我试图将一个变量分配给一个二维数组的索引,然后我将使用这个变量在二维数组周围移动它。例如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);  


达令说
浏览 184回答 3
3回答

犯罪嫌疑人X

对于初学者,您永远不会将结果分配intiateGrid(10)给网格。应该是let grid = intiateGrid(10)。代码也有更多问题,但请让我了解更多。例如应该intiateGrid(number)创建一个方阵?初始值应该是多少?此外,不要在循环时改变矩阵。const grid = intiateGrid(10);const player = {&nbsp; rowIndex: 0,&nbsp; colIndex: 0}//player starts at [0][0]movePlayer(0, 0)function intiateGrid(x) {&nbsp; const arr = new Array(x).fill(0); // array with x zeros&nbsp; const grid = arr.map(element => new Array(x).fill('O')) // array with x arrays, each with x zeros.&nbsp; return grid;}function movePlayer(row, col) {&nbsp; grid[row][col] = 'P';&nbsp; //set -1 to previous location&nbsp; grid[player.rowIndex][player.colIndex] = 'X'&nbsp; //update player location&nbsp; player.rowIndex = row;&nbsp; player.colIndex = col;&nbsp; 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(' | ')))

ITMISS

从您的问题中并不完全清楚,但是:例如,let p = grid[0][0]然后我希望能够将其移动到 grid[1][0]、grid[1][5] 等。使您看起来好像要创建某种指向二维数组结构中某个位置的“指针”。没有真正的方法可以用一个简单的值来实现这一点。一种方法是使用对象:let p = { x: 0, y: 0 };然后你可以创建函数来使用这样的对象来返回一个网格单元:function getCell(pointer) {&nbsp; return grid[pointer.x][pointer.y];}function setCell(pointer, value) {&nbsp; grid[pointer.x][pointer.y] = value;}除了像这两个示例那样将其隐藏在函数内部之外,您最终无法避免使用两个单独的数字来显式索引到二维结构中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript