69 votes

Comment supprimer des valeurs non définies du tableau en conservant 0 et null

En javascript, je souhaite supprimer les valeurs indéfinies, tout en conservant les valeurs 0 et null dans un tableau.

 [ 1, 2, 3, undefined, 0, null ]
 

Comment puis-je le faire proprement?

121voto

Jaynam Points 633

Vous pouvez utiliser _.compact(array);

Crée un tableau avec toutes les valeurs de Falsey supprimées. Les valeurs false, null, 0, "", indéfini et NaN sont falsey.

Voir: https://lodash.com/docs/4.15.0#compact

49voto

Piotr Białek Points 1559

La meilleure façon d'utiliser lodash est _.without

Exemple:

 const newArray = _.without([1,2,3,undefined,0,null], undefined);
 

15voto

epascarello Points 71353

Pas besoin de bibliothèques avec les navigateurs modernes. le filtre est intégré.

     var arr = [ 1, 2, 3, undefined, 0, null ];
    var updated = arr.filter(function(val){ return val!==undefined; });
    console.log(updated); 

11voto

Ryall Points 3428

Avec lodash , vous pouvez faire simplement:

var filtered = _.reject(array, _.isUndefined);

Si vous souhaitez également filtrer null ainsi que undefined à un moment donné:

var filtered = _.reject(array, _.isNil);

5voto

JoeTek Points 86

Avec lodash, les éléments suivants ne suppriment que les valeurs non définies du tableau:

 var array = [ 1, 2, 3, undefined, 0, null ];

_.filter(array, function(a){ return !_.isUndefined(a) }
--> [ 1, 2, 3, 0, null ]
 

Ou bien, ce qui suit supprimera les valeurs non définies, 0 et NULL:

 _.filter(array)
--> [1, 2, 3]
 

Et si vous souhaitez supprimer les valeurs nulles et non définies du tableau, tout en conservant les valeurs égales à 0:

 _.filter(array, function(a){ return _.isNumber(a) || _.isString(a) }
[ 1, 2, 3, 0 ]
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X