【问题标题】:Value of Index Insert into next row using loop使用循环将索引值插入下一行
【发布时间】:2015-10-31 08:42:23
【问题描述】:

我想插入 Array index 的所有值,我使用的是二维数组,但它只在二维数组中插入最后一个索引,我还使用 if 检查其中一个索引是否有值,如果是则值将插入,否则将不会插入索引。

 var arr = [[data1 , data2, data3], [data4 , data5, data6]];
 //data1 to data 4 have a value , data 5 and 6 is empty 
    for(var i = 0; i < arr.length; i++) {
        for(var j =0; j < arr[i].length; j++) {
          if(arr[i][j].length != 0 ){
           ToSheet.getRange(nextRow+1,2,1,3).setValues([arr[i]]);
           //It insert only the last index in array arr[1] even the index 0 have a value
          }
        }
      }

【问题讨论】:

  • 你现在的逻辑是arr[0]arr[1] 各3 次,当arr[i][j] 的内容不为0 时你写整个arr[i] 是有意的吗?如果您想插入行而不考虑值,为什​​么要首先进行检查?您能否举一个提供给函数的数据示例以及您希望它如何处理它?
  • 是的,如果arr[i][j]中的一个值不等于0,我写整个arr[i],甚至arr[i]的一个或两个值等于0,但是当 arr[i] 的值等于 0 时,这个值不会被写入。只有 arr[i] 有值

标签: javascript arrays loops google-apps-script


【解决方案1】:

试试这个:

function myFunction() {
  var arr = [['data1' , 'data2', 'data3'], ['data4' , 'data5', 'data6']];
  var outerArray = [];

  //data1 to data 4 has a value , data 5 and 6 is empty 
  for(var i = 0; i < arr.length; i++) {
    for(var j =0; j < arr[i].length; j++) {
      if (arr[i][j].length != 0 ) {
        outerArray.push(arr[i]);

        ToSheet.getRange(nextRow+1,2,1,arr[i].length).setValues(outerArray);
        //It inserts only the last index in array arr[1] even if the index 0 has a value
      }
    }
  }
}

我总是定义一个外部数组,然后将内部数组推入其中,而不是试图从字面上构建两个 D 数组。此外,要写入的列数可能会发生变化,因此请使用内部数组的长度来设置要写入的列数。

【讨论】:

  • 嗨,桑迪,感谢您回答我的问题,但是当我尝试运行代码时出现错误,提示“范围高度不正确,为 2 但应该为 1”它只插入第一个索引但不插入第二个索引,即使第二个索引有值。
  • 我认为您的数组arr 有问题。我认为它不是您告诉我们的格式。您需要使用故障排除技术,并逐行逐行执行代码。打开以下链接并阅读。 Google Documentation - troubleshooting
  • 1 + 对于帮助我的链接,我现在使用调试器感谢@Sandy
【解决方案2】:

在桑迪先生的帮助下也解决了问题,感谢您的帮助,我看到通过使用方法 push 和循环 3 次,对于 index 的值,我看到它也添加了 arr[i], 3 的值所以为了尽量减少这个错误,我只使用一个循环循环索引并使用或条件,而不是我得到我想要的:),

function myFunction() {
   var arr = [[data1 , data2, data3], [data4 , data5, data6]];
   var outerArray = [];
 //data1 to data 4 have a value , data 5 and 6 is empty 
    for(var i = 0; i < arr.length; i++) {
          if(arr[i][0].length != 0 || arr[i][1].length != 0 || arr[i][2].length != 0 ){
           outerArray.push(arr[i]);
           ToSheet.getRange(nextRow+1,2,outerArray.length,outerArray[0].length).setValues(outerArray);
           //(row, column, numRows, numColumns)
          }
      }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 2013-07-27
    • 2016-08-16
    • 2014-01-19
    相关资源
    最近更新 更多