web-dev-qa-db-fra.com

Comment supprimer des valeurs non définies du tableau, mais garder et null

En javascript, je souhaite supprimer les valeurs non définies mais conserver les valeurs 0 et null d'un tableau 

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

Comment puis-je le faire proprement?

34
JLavoie

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

53
Jaynam

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

Exemple:

const newArray = _.without([1,2,3,undefined,0,null], undefined);
25
Piotr Białek

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

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

8
epascarello

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 ]

Sinon, 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, mais conservez les valeurs égales à 0:

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

Vous pouvez essayer celui-ci.

var array = [ 1, 2, 3, undefined, 0, null ];
var array2 = [];
for(var i=0; i<array.length; i++){
    if(!(typeof array[i] == 'undefined')){
        array2.Push(array[i]);
    }
}
console.log(array2);
0
Amruth LS

Solution JS Vanilla: En utilisant ===, vous pouvez vérifier si la valeur est réellement undefined et non falsy.

Les deux extraits ci-dessous vous donneront un tableau avec [1, 2, 3, 0, null].

Les deux modifient le tableau d'origine .

// one liner - modifies the array in-place
[ 1, 2, 3, undefined, 0, null ].forEach( function(val, i, arr){
    if(val===undefined){arr.splice(i,1)}; // remove from the array if actually undefined
});

// broken up for clarity - does the same as the above
var myarray = [ 1, 2, 3, undefined, 0, null ];
myarray.forEach( function(val, i, arr){
    if(val===undefined){arr.splice(i,1)};// remove from the array if actually undefined 
});
console.log(myarray );

0
timisnull

Filtrer le tableau donné pour les éléments non égaux à indéfini.

const initialArray = [ 1, 2, 3, undefined, 0, null ];
const finalArray = initialArray.filter(element => element !== undefined);
0
Rushikesh Bharad

Avec ES6 Array # filter method

array.filter(item => item !== undefined)
0
tolotrasmile
const finalArray = initialArray.filter(i => Boolean(i))
0
shems eddine