直到最近,我才真正了解多维数组以及如何遍历它们。
到目前为止,我已经弄清楚了如何水平,垂直和对角地自动遍历2D数组,而无需在简单函数上对任何数字进行硬编码,以帮助我更好地理解嵌套循环。
使用所有可能的序列创建一个数组,但是我似乎无法概念化如何遍历和遍历右边的对角线(3,5,7)。
任何指针?
是否有更聪明的方式来做所有这些事情?
const grid = [
[1,2,3],
[4,5,6],
[7,8,9]
]
const coordinates = grid => {
const arr = [];
// get horizontals
for (let i = 0; i < grid.length; i++) {
for (let j = 0; j < grid.length; j++) {
arr.push(grid[i][j]);
// horizontals
// grid[i][j]
// grid[0][0]
// grid[0][1]
// grid[0][2]
// grid[1][0]
// grid[1][1]
// grid[1][2]
// grid[2][0]
// grid[2][1]
// grid[2][2]
}
}
// get verticals
for (let i = 0; i < grid.length; i++) {
for (let j = 0; j < grid.length; j++) {
arr.push(grid[j][i]);
// verticals
// grid[j][i]
// grid[0][0]
// grid[1][0]
// grid[2][0]
// grid[0][1]
// grid[1][1]
// grid[2][1]
// grid[0][2]
// grid[1][2]
// grid[2][2]
}
}
for (let i = 0; i < grid.length; i++) {
for (let j = 0; j < grid.length; j++) {
if (i === j) arr.push(grid[i][j])
// grid[0][0]
// grid[1][1]
// grid[2][2]
}
}
console.log(arr)
}
coordinates(grid);
答案 0 :(得分:2)
这将用于诊断。
for (let i = 0; i < grid.length; i++) {
// grid[i][i]
}
您可以使用grid.length-1-i来遍历4个对角线。
// grid[grid.length-1-i][i] // etc...
这将为您提供3,5,7
// grid[i][grid.length-1-i] // etc...