![](/img/trans.png)
[英]Ignore/Remove null, undefined and empty values in array count - Javascript
[英]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.