Фильтруйте строки после последней строки с данными, оставляйте пробелы на месте - PullRequest
0 голосов
/ 19 декабря 2018

Google App Script: я использовал sslink.getRange("C2:C").getValues().filter(String);, но он удаляет пробелы (строки без данных).

Есть ли способ сохранить между строками без данных, но удалить все строки после последней строки?

Например, у меня есть данные

a = [a,b,,c,d,,e,,,,,]

Я хотел бы найти индекс e (непустой массив, последний может быть f, g, h и т. д.), поэтому я могу удалить остальные данные, просто выполнив:

a.length = 7

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Если значения в вашем массиве являются строками, то вам может подойти что-то подобное:

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);
0 голосов
/ 20 декабря 2018

C2:C - это двумерный массив, который не похож на a.Используйте обратный цикл для определения индекса последнего элемента.

Фрагмент:

var a=[["a"],["b"],[""],["c"],["d"],[""],["e"],[""],[""],[""],[""],[""]];
var i= a.length;
while(i--){
 if(a[i][0] !== ""){break;}
}
a.length=++i;
0 голосов
/ 19 декабря 2018

Попробуйте это:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...