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

Javascript 使用循环将索引插入下一行的值,javascript,arrays,loops,google-apps-script,Javascript,Arrays,Loops,Google Apps Script,我想插入数组索引的所有值,我使用的是二维数组,但它只插入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++) {

我想插入数组索引的所有值,我使用的是二维数组,但它只插入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
          }
        }
      }
var arr=[[data1,data2,data3],[data4,data5,data6];
//数据1到数据4有一个值,数据5和6为空
对于(变量i=0;i
尝试使用以下方法:

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
      }
    }
  }
}
函数myFunction(){
var arr=['data1','data2','data3'],['data4','data5','data6'];
var outerArray=[];
//数据1到数据4有一个值,数据5和6为空
对于(变量i=0;i

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

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

函数myFunction(){
var arr=[[data1,data2,data3],[data4,data5,data6];
var outerArray=[];
//数据1到数据4有一个值,数据5和6为空
对于(变量i=0;i
你现在的逻辑是你每次都要经过
arr[0]
arr[1]
三次,当
arr[i][j]
的内容不是0时,你就要写整个
arr[i]
这是有意的吗?如果要插入行而不考虑值,为什么要首先进行检查?你能给出一个提供给函数的数据的例子,以及你希望它做什么吗?是的,如果arr[i][j]中的一个值不等于0,我写整个arr[i],即使是一个或两个arr[i]的值也等于0,但是当arr[i]的值等于零时,这个值将不会被写。只有arr[i]有一个值Hi Sandy谢谢你回答我的问题,但是当我尝试运行代码时,它出现了一个错误,上面写着“不正确的范围高度,是2,但应该是1”。它只插入第一个索引,而不是第二个索引,即使第二个索引有值。我想你的数组有问题
arr
。我认为它不是你告诉我们的格式。您需要使用故障排除技术,并逐行检查代码。打开以下链接并阅读。1+对于帮助我的链接,我现在使用调试器谢谢@Sandy
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)
          }
      }
}