Как удалить пустые массивы из массива массивов? - PullRequest
1 голос
/ 23 мая 2019

У меня есть массив массивов, который включает в себя несколько пустых массивов. Exp. [[Имя1], [Имя2], [Имя3], [], []]

Я пытался использовать shift и splice (пример кода приведен)

function RemoveEmptyArrays(){
  var NameArray = [[Name1],[Name2],[Name3],[],[]];

  for (i = 0; i < NameArray.length; i++) {
      if ( NameArray[i][0] === undefined ) {
         NameArray.splice(  i, 1 );
      }
  }
  Logger.log(arrayvals);
}

Желаемый вывод:

[ [Name1],[Name2],[Name3] ]

Ответы [ 2 ]

2 голосов
/ 23 мая 2019
  • Вы хотите получить от [[Name1],[Name2],[Name3],[],[]] до [ [Name1],[Name2],[Name3] ].

Если мое понимание верно, как насчет этого примера сценария?

Пример сценария:

var NameArray = [["Name1"],["Name2"],["Name3"],[],[]];
var res = NameArray.filter(function(e) {return e.length})
console.log(res)

Модифицированный скрипт:

Если ваш скрипт изменен, как насчет этой модификации?

var NameArray = [["Name1"],["Name2"],["Name3"],[],[]];

for (i = NameArray.length - 1; i >= 0; i--) { // Modified
  if ( NameArray[i][0] === undefined ) {
    NameArray.splice(i, 1);
  }
}
console.log(NameArray);

Справка:

1 голос
/ 23 мая 2019

Очень простой способ сделать это - использовать оператор распространения из ES6 и затем concat .

'concat' объединяет массивы в другой массив, иОператор распространения берет массив и передает его функции, как если бы они были параметрами (среди прочего).

Вот рабочая скрипка

const arr = [['a', 'b', 'c'], ['d', 'e', 'f'], [] ,[]] ;

const result = [].concat(...arr)

console.warn(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...