在数组中向后循环时出错

时间:2015-01-28 23:55:09

标签: javascript arrays google-apps-script google-sheets

我开始研究某些事情,并在早期遇到障碍,试图通过我对javascript的有限知识尽早思考问题。

我确信这是简单而烦人的事情,但我似乎无法看到导致错误的原因。

只需编写脚本即可使用谷歌脚本从谷歌电子表格中显示数据。但是,似乎无法反过来循环通过特定的值。

请参阅下面的注释代码,并提前致谢。

简单尝试循环遍历数组。 我决定去基础,因为我很难过。作品。记录器显示我上升了1

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=0;i < values.length;i++){
Logger.log([i]);

}
}

与上面相同,除了我试图反过来通过数组。  但是到目前为止我们只是问它我们所处的循环的哪一部分。

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=values.length;i > 0 ;i--){
Logger.log([i]);

}
}

准时绑好裤子,因为我们要求阵列提供数据, 循环前进。有用。它返回数组中每个条目的整行

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=0;i < values.length;i++){
Logger.log([i]+" " + values[i]);

}
}
让它进行月球漫步并再次尝试反向循环。 因为我很糟糕,我很糟糕,heee heeeh,oww。它有效:)

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=values.length;i > 0 ;i--){
Logger.log([i]+ " " + values[i]);

}
}

穿上我的大男孩裤子之后,我正准备在我的阵列中记录一个条目,

向前循环。华友世纪,裤子保持干净,结果如预期。

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=0;i < values.length;i++){
Logger.log([i]+" " + values[i][16]);

}
}

那么为什么哦为什么不能以相反的方式反向工作并且总是出错 “(TypeError:无法从undefined中读取属性”16“。(第69行,文件”Code“)Dismiss” 第69行是(Logger.log([i]+ " " + values[i][16]);)在下面的代码中。

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=values.length;i > 0 ;i--){
Logger.log([i]+ " " + values[i][16]);

}
}

2 个答案:

答案 0 :(得分:4)

考虑一下你应该用于'循环'的索引。向后循环数组时,您希望从最后一个索引开始,以第一个索引结束。

您可能知道,数组a的最后一个索引是a.length - 1,而第一个索引是0。您希望将它们都包含在循环中,因此向后循环的代码是:

for (i = values.length - 1; i >= 0; i--) {
    Logger.log(i + " " + values[i][16]);
}

答案 1 :(得分:4)

数组从索引0开始,因此数组中的最后一个索引的长度为-1,所以:

for(i=values.length;i > 0 ;i--){

应该是

for (i=values.length-1; i >= 0; i--){