Удалить или игнорировать пустые ячейки в массиве - PullRequest
0 голосов
/ 14 января 2020

Я перепробовал каждое решение / код, который видел здесь, но ничего не получалось. Ничего не изменилось. У меня есть все oop, где я определяю свои массивы. Некоторые ячейки объединяются, откуда я копирую, и массив также содержит пустые столбцы.

Это мой код:

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,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Ответы [ 2 ]

1 голос
/ 14 января 2020

Прежде всего, вы не должны использовать al oop для получения значений из диапазона. Вы можете сделать то же самое с:

var array = sourceSheet.getRange(startrow,5,3,29).getValues();

или если вы получаете все значения листа:

var array = sourceSheet.getDataRange().getValues()

Однако Вы можете удалить пустые места в массиве с помощью функции splice . Поскольку он удаляет позиции, массив будет уменьшаться каждый раз, когда он находит пустое место, поэтому for l oop, используемый здесь, должен go в обратном направлении:

  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 без l oop, это будет двумерный массив, как вы можете видеть в документации .

0 голосов
/ 14 января 2020

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)

...