Отфильтруйте массив с нулевыми значениями, подчеркивание

У меня есть этот массив:

[null, {name:'John'}, null, {name:'Jane'}]

Я хочу удалить нулевые значения. Есть ли простой способ сделать это с подчеркиванием?

Ответы

Ответ 1

Попробуйте использовать _.without(array, *values), чтобы удалить все значения, которые вам не нужны. В вашем случае * значения == null

http://underscorejs.org/#without

Ответ 2

Если массив содержит либо нули, либо объекты, вы можете использовать compact:

var everythingButTheNulls = _.compact(list);

NB compact удаляет все значения ложности, поэтому, если массив может содержать нули, false и т.д., то они также будут удалены.

Также можно использовать отклонить с помощью isNull предикат:

var everythingButTheNulls = _.reject(array, _.isNull);

Ответ 3

Это будет работать для вас

Фильтр

_.filter(arr,function (value) {
    return value!==null;
})

Отклонить

_.reject(arr,function (value) {
    return value===null;
})

Ответ 4

Из документации подчеркивания

without_.without(array, *values) 
Returns a copy of the array with all instances of the values removed.

Так просто используйте этот метод

var a = [null, {name:'John'}, null, {name:'Jane'}]
a = _.without(a, null);