在JavaScript中使用嵌套循环遍历数组

时间:2018-08-22 16:57:40

标签: javascript arrays

直到最近,我才真正了解多维数组以及如何遍历它们。

到目前为止,我已经弄清楚了如何水平,垂直和对角地自动遍历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);


 

1 个答案:

答案 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...