繁体   English   中英

按索引访问嵌套数组时的Google Apps脚本错误

[英]Google Apps Script error when accessing nested array by index

当我尝试使用双索引访问嵌套数组时,Google Apps脚本引发错误,它说:TypeError:无法从未定义中读取属性“ 3”。 (第27行,文件“代码”)

这是代码:

    var ss = SpreadsheetApp.openById("SpreadsheetID");
var sheetMAT = ss.getSheetByName("Sheet3");
var data = sheetMAT.getRange(3, 2, sheetMAT.getLastRow() - 1, 4).getValues();
var temporaryData = [];
var dataReadyLine = [];

function getReadyLine() {
  var rawData = sheetMAT.getRange(3, 2, sheetMAT.getLastRow() - 1, 4).getValues();
  Logger.log(rawData[0][3]);
  for (var i=0; i<=rawData.length; i++) {
    if (rawData[i][3] === "A Ready Line") {
      temporaryData.push(data[i][1], data[i][0]);
      dataReadyLine.push(temporaryData);
      temporaryData = [];
    }
  }
  return dataReadyLine;
};

'Logger.log(rawData [0] [3]);'行 成功地打印了嵌套数组项的值,但是当涉及到IF条件时,它会给出未定义的错误。 为什么会出现此错误? 我如何使FOR循环起作用?

这是我尝试运行代码时出现错误的打印屏幕: 打印屏幕

对于for循环的以下修改如何?

来自:

for (var i=0; i<=rawData.length; i++) {

至 :

for (var i=0; i<=rawData.length - 1; i++) {

要么

for (var i=0; i<rawData.length; i++) {

Array索引是从0Array.length - 1 因此, for (var i=0; i<=rawData.length; i++) {在rawData.length处发生错误。

作为另一种表达方式,您可以使用

for (var i in rawData) {

在这种情况下,您还可以通过rawData[i][3]检索元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM