You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何生成“错位循环”数字二维数组?

解决嵌套循环生成循环排列二维数组的问题

你只需要把内层循环的push内容替换成这个表达式:

((i + j) % gridSize) + 1

完整代码如下:

const grid = []
const gridSize = 3

for(let i = 0; i < gridSize; i++) {
  const row = []

  for(let j = 0; j < gridSize; j++) {
    row.push(((i + j) % gridSize) + 1)
  }

  grid.push(row)
}

console.log(grid)
// 输出结果和示例完全一致:
// [ [1,2,3], [2,3,1], [3,1,2] ]

逻辑拆解

  • i是当前行的索引(从0开始),i + j对应当前元素在循环序列中的偏移位置
  • 对gridSize取模%,用来处理超出最大值后的循环重置(比如当i+j等于3时,3%3=0)
  • 最后加1是因为我们的数字从1开始,而模运算的结果范围是0到gridSize-1,加1后正好对应1到gridSize的循环

另外你提到的每行总和相等的问题,本质是因为每行都是1到gridSize的完整排列,所以每行总和固定为(1 + gridSize) * gridSize / 2,自然保持相等。

内容的提问来源于stack exchange,提问作者SeriousLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:32:39