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

JavaScript中将单个for循环拆分为3/4层嵌套循环的实现方法

实现思路

你当前的两层循环是将连续序列按10为步长分层拆分,核心逻辑是把最终输出的数值 n = 第一层数值 * 10 + 第二层数值。如果要拆为3层/4层,只需要按10的幂次依次叠加层级即可,公式对应为:

  • 3层:n = i * 100 + j * 10 + k
  • 4层:n = i * 1000 + j * 100 + k * 10 + l

3层循环实现示例

console.config({
    maxEntries: Infinity
});

let q = 100;
// 第一层:每100个为一大组
const layer1Size = 100;
const layer1Count = q % layer1Size === 0 ? q / layer1Size : Math.floor(q / layer1Size) + 1;
for (let i of [...Array(layer1Count).keys()]) {
  // 第二层:每10个为一中组
  const layer2Size = 10;
  const maxLayer2Total = Math.min(layer1Size, q - i * layer1Size);
  const layer2Count = maxLayer2Total % layer2Size === 0 ? maxLayer2Total / layer2Size : Math.floor(maxLayer2Total / layer2Size) + 1;
  for (let j of [...Array(layer2Count).keys()]) {
    // 第三层:单个元素
    const maxLayer3Total = Math.min(layer2Size, maxLayer2Total - j * layer2Size);
    for (let k of [...Array(maxLayer3Total).keys()]) {
      console.log(i * layer1Size + j * layer2Size + k);
    }
  }
}
.as-console-wrapper {
    max-height: 100% !important;
}

4层循环实现示例

只需要再叠加一层千位分组即可,逻辑完全一致:

console.config({
    maxEntries: Infinity
});

let q = 1500; // 可调整数值测试效果
// 第一层:每1000个为一大组
const layer1Size = 1000;
const layer1Count = q % layer1Size === 0 ? q / layer1Size : Math.floor(q / layer1Size) + 1;
for (let i of [...Array(layer1Count).keys()]) {
  // 第二层:每100个为一中组
  const layer2Size = 100;
  const maxLayer2Total = Math.min(layer1Size, q - i * layer1Size);
  const layer2Count = maxLayer2Total % layer2Size === 0 ? maxLayer2Total / layer2Size : Math.floor(maxLayer2Total / layer2Size) + 1;
  for (let j of [...Array(layer2Count).keys()]) {
    // 第三层:每10个为一小组
    const layer3Size = 10;
    const maxLayer3Total = Math.min(layer2Size, maxLayer2Total - j * layer2Size);
    const layer3Count = maxLayer3Total % layer3Size === 0 ? maxLayer3Total / layer3Size : Math.floor(maxLayer3Total / layer3Size) + 1;
    for (let k of [...Array(layer3Count).keys()]) {
      // 第四层:单个元素
      const maxLayer4Total = Math.min(layer3Size, maxLayer3Total - k * layer3Size);
      for (let l of [...Array(maxLayer4Total).keys()]) {
        console.log(i * layer1Size + j * layer2Size + k * layer3Size + l);
      }
    }
  }
}
.as-console-wrapper {
    max-height: 100% !important;
}

如果你需要自定义每层的分组大小,只需要修改对应layerXSize的数值即可,不需要固定为10的倍数。

内容的提问来源于stack exchange,提问作者Buğra Gündüz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 13:45:05