向后遍历数组时出错

Error while looping backwards through an array

我开始着手做某事,但实际上很早就遇到了障碍,试图以我对 javascript 的有限知识尽早思考解决问题的方法。

我确定这很简单而且很烦人,但我似乎看不出是什么导致了错误。

只是在编写脚本以使用 google 脚本最终显示 google 电子表格中的数据。但是,是的,似乎无法反向循环特定值。

请在下面查看我的注释代码并提前致谢。

简单尝试向前循环数组。 决定去基础,因为我被难住了。作品。记录器显示我上升了 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]);

}
}

请准时系好裤子,因为我们正在向数组请求数据, 向前循环。有用。它returns数组中每个条目的整行

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]);

}
}

让我们来月球漫步,然后再次尝试反向循环。 因为我很坏,我很坏,嘻嘻,哇。它有效:)

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:无法从未定义中读取 属性“16”。(第 69 行,文件 "Code")关闭” 第 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]);

}
}

考虑应该为 'for' 循环使用的索引。当您向后循环数组时,您希望从最后一个索引开始,并以第一个索引结束。

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

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

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

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

应该是

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