【问题标题】:Filter rows after last row with data, keep gaps in place用数据过滤最后一行之后的行,保持空白
【发布时间】:2018-12-19 18:49:12
【问题描述】:
谷歌应用脚本:
我使用了sslink.getRange("C2:C").getValues().filter(String);,但它消除了空白(没有数据的行)。
有没有办法在没有数据的行之间保留,但删除最后一行之后的所有行?
比如我有数据
a = [a,b,,c,d,,e,,,,,]
我想找到e的索引(一个非空数组,最后一个可能是f、g、h等),所以我可以简单地删除其余数据:
a.length = 7
提前致谢!
【问题讨论】:
标签:
javascript
arrays
google-apps-script
【解决方案1】:
如果你的数组中的值是字符串,那么这样的东西可能对你有用:
var a = ['a', 'b', '', 'c', 'd', '', 'e', '', '', '', '', ''];
function removeTrailingSpaces(array) {
while (array[array.length - 1].length === 0) {
array.pop();
}
}
removeTrailingSpaces(a);
console.log(a);
console.log(a.length);
【解决方案2】:
试试这个:
function getData(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=0;i<vA.length;i++){
vA[i]=vA[i].slice(2,3);
}
while(!vA[vA.length-1][0]){
vA.splice(vA.length-1,1);
}
return vA
}
【解决方案3】:
C2:C 是一个二维数组,看起来不像a。使用反向循环来确定最后一个元素的索引。
片段:
var a=[["a"],["b"],[""],["c"],["d"],[""],["e"],[""],[""],[""],[""],[""]];
var i= a.length;
while(i--){
if(a[i][0] !== ""){break;}
}
a.length=++i;