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

Мне нужно отфильтровать массив, чтобы он удалил из него неопределенные объекты.

enter image description here

Я пытался с lodash _.filter, но не сделалуспешно (возвращен полностью пустой массив)

_.filter(myArray, _.isEmpty)

Я использую Angular 6, так что все с машинописью или lodash было бы идеально.

Ответы [ 6 ]

0 голосов
/ 12 ноября 2018

В filter функции lodash , если обратный вызов (переданный в качестве аргумента) возвращает истинное значение, которое элемент считал сохраненным в результирующем массиве, в противном случае (в случае возврата ложного значения) он не будет сохранять этот элемент,Ваш isEmpty вернет true, если он пуст и, следовательно, результат сохраняет эти значения (null, undefined, 0, ...).Таким образом, вы можете использовать

_.filter(myArray, _.negate(_.IsEmpty)) или _.filter(myArray, v => !_.IsEmpty(v))

Как вы пытаетесь

Или вы можете напрямую использовать _.filter(myArray), но в этом случае этоне удалит пустой объект или пустой массив, как и _.filter(myArray, Boolean), передача Boolean не требуется в случае использования lodash

, если вы не хотите отрицать и хотите более простое решение дляудалив все пустые элементы, тогда вы можете использовать

_.reject(myArray, _.isEmpty)

0 голосов
/ 12 ноября 2018
var newArray = array.filter(arrayItem => arrayItem)

Он будет фильтровать массив, чтобы удалить все неопределенные объекты и назначить новую переменную с именем newArray

0 голосов
/ 12 ноября 2018

Вам не нужна библиотека; тип массива Javascript имеет filter метод :

var filteredArray = myArray.filter(item => item !== undefined);
0 голосов
/ 12 ноября 2018

Использование Javascript также возможно. он поддерживает null, undefined, 0, empty.

newArray = myArray.filter(item=> item);
0 голосов
/ 12 ноября 2018

Более простой способ:

_.filter(myArray, Boolean)

Это освобождает массив нулей, 0 и неопределенных значений.

0 голосов
/ 12 ноября 2018

Более простой способ

_.filter(myArray, function(o) { return o !== undefined });
...