从JS数组中删除非0虚假值的最简单方法是什么?

时间:2019-02-08 17:51:46

标签: javascript arrays google-apps-script google-sheets

我正在尝试一种功能,使其能够在Google表格中“从上次停止的地方收起”。

我需要在具有数据的特定列中找到最后一行。 但是:

  • 工作表还有许多其他的列,甚至还有更多的行,所以我不能使用 工作表上的getLastRow。

  • 我正在尝试确定要定位的范围,因此getLastRow现在将 还是在范围级别上工作,因为我还没有范围。

  • 我无法处理array.filter(String),因为我正在处理数字值。

  • 我无法过滤删除虚假元素(通常用于过滤空白 数组值)。

示例:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getRange(B1:B);
var values = range.getValues(); //Pseudo Array values = [0,0,1,"",""]
var quantityOfValues= values.filter(?????).length //Goal: quantityOfValues== 3
var dataRange = sheet.getRange(1,2,quantityOfValues,1).... // do stuff to this range

2 个答案:

答案 0 :(得分:3)

删除所有虚假值的最简单方法是将值设为零,您可以检查真实值还是零。

result = array.filter(v => v || v === 0);

答案 1 :(得分:0)

查找列高度

这就是我的工作

function getColumnHeight(col,sh,ss){
  var ss=ss || SpreadsheetApp.getActive();
  var sh=sh || ss.getActiveSheet();
  var col=col || sh.getActiveCell().getColumn();
  var rg=sh.getRange(1,col,sh.getLastRow(),1);//This is just a reasonable starting point.
  var vA=rg.getValues();
  while(vA[vA.length-1][0].length==0){
    vA.splice(vA.length-1,1);
  }
  return vA.length;
}