索引值使用循环插入下一行

时间:2015-10-31 08:42:24

标签: javascript arrays loops google-apps-script

我想插入数组索引的所有值,我使用2维数组,但它只插入2d数组中的最后一个索引,我也使用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
          }
        }
      }

2 个答案:

答案 0 :(得分: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数组。此外,写入的列数可能会更改,因此请使用内部数组的长度来设置要写入的列数。

答案 1 :(得分:1)

问题通过sand的mr帮助解决,感谢帮助我看到通过使用方法推送和循环3次,对于索引的值,我看到它还添加了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)
          }
      }
}