相关疑难解决方法(0)

计算数组中的空值

给定一个数组:

var arr = [1,,2,5,6,,4,5,6,,];
Run Code Online (Sandbox Code Playgroud)

计算有多少值:(长度 - 删除空值后的长度)

var empties = arr.length - arr.filter(function(x){ return true }).length;

// return 3
Run Code Online (Sandbox Code Playgroud)

或类似的东西

arr.empties = arr.length;
arr.forEach(function(x){ arr.empties--  });

// arr.empties returns 3
Run Code Online (Sandbox Code Playgroud)

这是最好的方式还是我错过了什么?

javascript

8
推荐指数
2
解决办法
2万
查看次数

使用PHPexcel以便宜的方式查找最高的非空列/行(在Google表格导出中)

当导入在PHPExcel,PHPexcel方法谷歌表导出的.xlsx文件$worksheet->getHighestDataColumn(),并$worksheet->getHighestDataRow()都返回谷歌文档的最大集,包括完全空白单元格,这通常是26x1000.

在Google表格/ Excel中打开它们时,单元格与常规空Excel单元格一样空,即无空格.

也许谷歌表格使用略微不同的方法来"保留"列和行而不是Excel(即时生成它们).

我想获得最高的非空行,以便在循环遍历行时不会不必要地分配大量内存.尊重我正在使用的格式,我可以在空行中保存一些评估,但最后,我被迫简单地遍历所有行并检查所有单元格是否为空.

php google-sheets phpexcel

8
推荐指数
1
解决办法
2353
查看次数

从数组中删除等于零的尾随元素 - 更好的方法

我有很长的数组包含数字.我需要从该数组中删除尾随零.

如果我的数组看起来像这样:

var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
Run Code Online (Sandbox Code Playgroud)

我想删除除了之外的所有内容[1, 2, 0, 1, 0, 1].

我已经创建了正在做的事情的功能,但我想知道是否有我可以使用的功能构建.

var arr = [1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
for(i=arr.length-1;i>=0;i--)
{
    if(arr[i]==0) 
    {
        arr.pop();
    } else {
        break;
    }
}
console.log(arr);
Run Code Online (Sandbox Code Playgroud)

这可以做得更好/更快吗?

javascript jquery

5
推荐指数
1
解决办法
2188
查看次数

找到C列的LastRow(当Col A和B有不同的行大小时)?

如何找到C列的最后一个使用过的单元格?

示例:"Sheet1":"Col A"和"Col B"有1200行.而"Col C"只有一排.

## ColA  ColB   ColC
##    1     1      1
##    2     2   empty
## ..    ..     ..
## 1200  1200   empty
Run Code Online (Sandbox Code Playgroud)

以下是我不成功的测试:

Function find_last_row_other_column() {
var ws_sheet =
var ws = SpreadsheetApp.openById("Dy...spreadsheet_id...4I")
var ws_sheet = ws1.getSheetByName("Sheet1");

var lastRow = ws_sheet.getRange("C").getLastRow();
var lastRow = ws_sheet.getRange("C:C").getLastRow();
var lastRow = ws_sheet.getRange(1,3,ws_sheet.getLastRow());  1200 rows for colA! instead of row = 1 for col C.
}
Run Code Online (Sandbox Code Playgroud)

注意:我不能使用C1,因为下次我使用该功能时它将是C1200或其他东西.

var lastRow = ws_sheet.getRange("C1").getLastRow();
Run Code Online (Sandbox Code Playgroud)

我问这个是因为我的下一个目标是将C1的结果复制/粘贴到C2:C1200中.这是我的测试:

var lastRow = ws_sheet.getLastRow();
var target_range = ws_sheet.getRange(1,3,lastRow,1); //C1 …
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script

3
推荐指数
1
解决办法
1万
查看次数

VLookup 的 Google 脚本版本(更有效的方法?)

我正在尝试组合一个函数,该函数允许我根据关键列将列的信息从一张纸拉到另一张纸上。这与 excel/google 中的索引匹配或 vlookup 类似。

样本数据:

在此输入图像描述

我尝试过的:

function vlookup(importFromSht, importToSht, importFromCompCol, importToCompCol,importFromCol, importToCol){
  var lastImportFromRN = importFromSht.getLastRow();
  var lastImportToRN = importToSht.getLastRow();
  var importFromCompArr =  importFromSht.getRange(2, importFromCompCol, lastImportFromRN, 1).getValues();
  var importToCompArr =  importToSht.getRange(2, importToCompCol, lastImportToRN, 1).getValues();
  var importFromArr =  importFromSht.getRange(2, importFromCol, lastImportFromRN, 1).getValues();
  var importToArr = [];

  for (var i in importToCompArr) {
    for (var j in importFromCompArr){
      if (importToCompArr[i].toString() == importFromCompArr[j].toString()) { 
        importToArr.push(importFromArr[j]);
      }
    }
  }

  //Paste to column
  importToSht.getRange(2,importToCol,importToArr.length,1).setValues(importToArr);
}
Run Code Online (Sandbox Code Playgroud)

参数定义

  • importFromSht - 我们正在从中获取值的表。
  • importToSht - 工作表值将被复制到。
  • importFromCompCol - …

google-sheets google-apps-script google-sheets-formula

2
推荐指数
1
解决办法
7182
查看次数

Google Script - 获取特定列的最后一行

我正在寻找一种方法来查找特定列的最后一行(带有数据)。假设 A 列第 100 行的最后一个数据项,B 列第 50 行的最后一个数据项。

.getLastRow(); 将永远返回 100 给我。

我需要一种简单的方法来获得 50(这是 B 列中最后一个非空行的行号)。

我不能使用循环。这非常重要,因为有数千行,它只会花费太多时间。

我用谷歌搜索了很多,但所有的答案都涉及循环。

javascript google-sheets google-apps-script

1
推荐指数
1
解决办法
2万
查看次数