Google Script/JavaScript中如何将数据填入二维数组及报错处理
问题原因
- 你初始化的二维数组
var array=[[],[]]仅包含2个空的子数组元素,对应索引是0和1 - 循环变量
i从1开始一直到5,当i >= 2时,array[i]本身就是未定义的undefined,直接对array[i][0]赋值就会触发Cannot set property '0' of undefined报错 - 原写法即使修复赋值逻辑,数组的索引
0也会是空值,不符合你要求的从第一个元素开始就是[name,result]的需求
修复方案
推荐直接用数组push方法,写法更简洁也不会出现索引错位问题:
function one(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("123aaa"); var num_of_samples = 5; var array = []; // 初始化为空数组即可 for(i=1; i <= num_of_samples; i++){ var name = sheet.getRange(2*i+6,2).getValue(); var result = sheet.getRange(2*i+7,2).getValue(); // 直接把新生成的子数组压入大数组 array.push([name, result]); } Logger.log(array); }
如果要保留索引赋值的写法,需要提前给对应位置的子数组做初始化:
function one(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("123aaa"); var num_of_samples = 5; var array = []; for(i=1; i <= num_of_samples; i++){ var name = sheet.getRange(2*i+6,2).getValue(); var result = sheet.getRange(2*i+7,2).getValue(); array[i-1] = []; // 先初始化当前索引对应的子数组,用i-1是让数组索引从0开始连续 array[i-1][0] = name; array[i-1][1] = result; } Logger.log(array); }
内容的提问来源于stack exchange,提问作者user4535384
相关产品推荐
相关产品推荐

