En determinadas situaciones, puede ocurrir que tengamos valores undefined o generalmente falsos en las estructuras Array. Por ejemplo, al leer y completar datos de algunas fuentes desconocidas como bases de datos o estructuras HTML. Me gusta
var data = [42, 21, undefined, 50, 40, undefined, 9] Dado que eso podría causar problemas al recorrer dichas matrices y trabajar en los elementos, ¿cuál es la mejor práctica para eliminar undefined (valores falsos)?
Usar Array.prototype.filter aquí podría ser obvio. Entonces, para eliminar solo valores indefinidos, podríamos llamar
var data = [42, 21, undefined, 50, 40, undefined, 9]; data = data.filter(function( element ) { return element !== undefined; }); Si queremos filtrar todos los valores falsos (como 0 o nulo), podemos usar return !!element; en cambio.
Pero podemos hacerlo un poco más elegante, simplemente pasando la función constructora Boolean , respectivamente, la función constructora de Number a .filter :
data = data.filter( Number );Eso haría el trabajo en este caso, para eliminar generalmente cualquier valor falso , lo llamaríamos
data = data.filter( Boolean ); Dado que el constructor Boolean() devuelve true en valores verdaderos y false en cualquier valor falso , esta es una opción muy buena.
En línea usando lambda
result.filter(item => item);Puede usar el método compact lodash, que elimina null , undefined y ''
_.compact(data)