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

JavaScript遍历生成指定格式二维多维数组的方法

实现方案

你当前的代码生成的是按字母分组的二维数组(每个子数组为同字母不同序号的集合,如["A1","A2"...,"A10"]),和目标的[[A1, B1, C1...], [A2, B2, C2...]]结构相比,分组维度刚好相反,同时存在全局变量污染的问题,可以按以下方式修正。


基础循环实现(逻辑直观易读)

直接调整两层循环的遍历逻辑,外层循环控制序号(对应每个子数组),内层循环遍历字母拼接单元格值,最终把网格作为函数返回值即可:

const letters = "abcdefghij".toUpperCase();

const createGrid = (size = letters.length) => {
  const grid = [];
  // 外层遍历序号,生成每一个子数组
  for (let num = 1; num <= size; num++) {
    const row = [];
    // 内层遍历A-J所有字母,拼接当前序号的单元格
    for (let charIdx = 0; charIdx < letters.length; charIdx++) {
      row.push(`${letters[charIdx]}${num}`);
    }
    grid.push(row);
  }
  return grid;
};

// 调用生成数组
const grid = createGrid();
console.log(grid);

简洁写法(数组API实现)

如果偏好更精简的代码,可以用Array.from直接映射生成二维数组,逻辑和循环实现完全一致:

const letters = "abcdefghij".toUpperCase();
const createGrid = (size = letters.length) => 
  Array.from({ length: size }, (_, numIdx) => 
    Array.from(letters, letter => `${letter}${numIdx + 1}`)
  );

const grid = createGrid();
console.log(grid);

运行以上任意一段代码,都能得到你需要的结构:

  • 索引0的子数组:['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1']
  • 索引1的子数组:['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2']
  • 后续子数组按序号递增规律生成,直到序号等于传入的size值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:09:18