繁体   English   中英

删除或忽略数组中的空单元格

[英]Remove or ignore empty cells in array

我已经尝试了我在这里看到的所有解决方案/代码,但没有任何效果。 没有改变任何东西。 我有一个循环来定义我的数组。 一些单元格在我复制的地方合并,数组也包括空列。

这是我的代码:

var array = []; 
  for (var m = 0; m < startRows.length; m++) { 
    array[m] = sourceSheet.getRange(startRows[m],5,3,29).getValues().filter(String); 
  }
 // Logger.log("array:   " + array[0]);  

为什么这不起作用?

编辑:数组[0]的日志:

[20-01-14 14:54:29:668 GMT] array:   Chlorine content,,,,,1 / d,,ASTM D5463,,,,,NSP601,,,Sat Dec 30 1899 14:05:00 GMT+0000 (Greenwich Mean Time),,0.42,,,,ppm,,,0.3 - 0.5,,,,,TREATED SEAWATER,,,,,,,,,,,,,,,,,,,,,,,,,,,,

首先,您不应该使用循环从范围中获取值。 你可以这样做:

var array = sourceSheet.getRange(startrow,5,3,29).getValues();

或者,如果您正在获取工作表的所有值:

var array = sourceSheet.getDataRange().getValues()

但是,您可以使用splice函数删除数组的空位。 由于它正在删除位置,因此每次找到空位时数组都会缩小,因此此处使用的for循环必须向后移动:

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

    if (array[i] == ''){
      array.splice(i, 1); //i is the index, 1 is the number of positions to delete
    }

  }
  Logger.log(array);  

如果您在没有循环的情况下声明和设置array的值,它将是一个二维数组,如您在文档中所见。

 const arr = [ "Chlorine content", "", "", "", "", "1 / d", "", "ASTM D5463", "", "", "", "", "NSP601", "", "", "Sat Dec 30 1899 14:05:00 GMT+0000 (Greenwich Mean Time)", "", "0.42", "", "", "", "ppm", "", "", "0.3 - 0.5", "", "", "", "", "TREATED SEAWATER", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" ]; const result = arr.filter(el => el); console.log(result)

如果这是您的数组,则意味着您可以使用简单的过滤器而不是.filter(String)过滤空值

暂无
暂无

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

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