underscore react lodash

react - lodash vs underscore



Cómo eliminar valores no definidos de la matriz pero mantener 0 y nulo (8)

Con lodash , puedes hacer simplemente:

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

Si también quiere filtrar null y undefined en algún momento:

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

En javascript, quiero eliminar valores no definidos, pero mantener los valores 0 y nulos de una matriz.

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

¿Cómo puedo hacerlo limpiamente?


Filtra la matriz dada para elementos que no sean iguales a indefinidos.

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


La mejor manera de usar lodash es _.without

Ejemplo:

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


No hay necesidad de bibliotecas con navegadores modernos. filter está integrado en.

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


Puedes probar este.

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);


Puedes usar _.compact(array);

Crea una matriz con todos los valores de falsey eliminados. Los valores false, null, 0, "", undefined y NaN son falsey.

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


Solución de JS de vainilla: Al utilizar === , puede verificar si el valor es realmente undefined y no es falsy .

Los dos fragmentos siguientes le darán una matriz con [1, 2, 3, 0, null] .

Ambos modifican la matriz original.

// 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 );


Usando lodash, lo siguiente elimina solo los valores indefinidos de la matriz:

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

O, lo siguiente eliminará los valores indefinidos, 0 y nulos:

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

Y si desea eliminar valores nulos e indefinidos de la matriz, pero mantenga los valores iguales a 0:

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