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
相关产品推荐
相关产品推荐

