迭代数组生成指定键值对对象失败,请求技术帮助
问题分析与修正代码
先明确你代码里的几个核心错误:
- 循环逻辑偏差:用
i +=16作为步长,但CELL数组长度仅为3,导致循环仅执行一次,完全没遍历到所有数组元素。 - 变量名笔误:你写的
To_add[Cell]是错误的,数组名是CELL,且需要用数组索引CELL[i]来获取每个元素作为对象的键。 - 循环条件错误:
i <= CELL.length会触发数组索引越界(数组索引从0开始,最大有效索引是CELL.length-1)。
修正后的代码如下:
const CELL = ['abc', 'def', 'xyz']; const START_LINE = 45; const COLUMN = 'D'; const To_add = {}; // 遍历CELL数组的每个元素,index为当前元素的索引 for (let index = 0; index < CELL.length; index++) { // 计算当前行号:起始行 + 索引×16 const currentLine = START_LINE + index * 16; // 将数组元素作为键,列号+行号拼接后作为值存入对象 To_add[CELL[index]] = `${COLUMN}${currentLine}`; } Logger.log(To_add);
运行后To_add会得到你预期的结果:{'abc': 'D45', 'def': 'D61', 'xyz': 'D77'}
关键修正说明:
- 依靠数组索引遍历所有元素,确保每个数组项都被处理。
- 通过
index ×16实现行号逐次递增16的需求,第一个元素对应0×16,第二个对应1×16,以此类推。 - 使用
let/const声明变量,避免全局变量污染(你原代码中多个变量未加声明,属于不良编程习惯)。 - 用模板字符串
${COLUMN}${currentLine}拼接列号与行号,写法更直观清晰。
内容的提问来源于stack exchange,提问作者Shaik Naveed
相关产品推荐
相关产品推荐

