直到最近,我才真正理解了多维数组以及如何遍历它们。
到目前为止,我已经想出了如何在水平、垂直和对角方向上自动遍历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);
发布于 2018-08-23 01:00:49
这将适用于diag。
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...
https://stackoverflow.com/questions/51971772
复制相似问题