web-dev-qa-db-fra.com

Filtrer un tableau avec des valeurs nulles, souligner

J'ai ce tableau:

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

Je veux supprimer les valeurs nulles. Existe-t-il un moyen simple de le faire avec un soulignement?

23
Joe

Si le tableau contient des valeurs nulles ou des objets, vous pouvez utiliser compact :

var everythingButTheNulls = _.compact(list);

NB compact supprime toutes les valeurs fausses, donc si le tableau peut contenir des zéros, des faux etc., alors ils seront également supprimés.

Pourrait également utiliser ( rejeter avec le isNull prédicat:

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

Essayez d'utiliser _.without(array, *values) cela supprimera toutes les valeurs dont vous n'avez pas besoin. Dans votre cas * valeurs == null

http://underscorejs.org/#without

20
onetwo12

Cela fonctionnera pour vous

Filtre

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

Rejeter

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

La meilleure solution consiste à utiliser compact , mais le comportement par défaut de la fonction filter lorsque vous n'incluez pas de fonction de test de vérité spécifique consiste à supprimer fausses valeurs

Par exemple:

_.filter([null, {name:'John'}, null, {name:'Jane'}])

renvoie un tableau d'objets sans les nulls:

[{name:'John'}, {name:'Jane'}]
0
Nick Pierpoint

De la documentation de soulignement

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

Il suffit donc d'utiliser cette méthode

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