Tengo un objeto Javascript como:
var my_object = { a:undefined, b:2, c:4, d:undefined };¿Cómo eliminar todas las propiedades indefinidas? Los atributos falsos deben permanecer.
Simplemente puede encadenar _.omit() con composiciones _.isUndefined y _.isNull , y obtener el resultado con una evaluación perezosa.
var result = _(my_object).omit(_.isUndefined).omit(_.isNull).value();Actualización 14 de marzo de 2016 :
Como mencionan los dylants en la sección de comentarios, debe usar la función _.omitBy() ya que usa un predicado en lugar de una propiedad. Debe usar esto para lodash versión 4.0.0 y superior.
var result = _(my_object).omitBy(_.isUndefined).omitBy(_.isNull).value();Actualización 1 de junio de 2016 :
Como comentó Max Truxa , lodash ya proporcionó una alternativa _.isNil , que verifica tanto el null como el undefined :
var result = _.omitBy(my_object, _.isNil);Si desea eliminar todos los valores falsos , la forma más compacta es:
Para Lodash 4.x y posteriores :
_.pickBy({ a: null, b: 1, c: undefined }, _.identity); >> Object {b: 1}Para Lodash 3.x heredado :
_.pick(obj, _.identity); _.pick({ a: null, b: 1, c: undefined }, _.identity); >> Object {b: 1}La respuesta correcta es:
_.omitBy({ a: null, b: 1, c: undefined, d: false }, _.isNil)Eso da como resultado:
{b: 1, d: false}La alternativa dada aquí por otras personas:
_.pickBy({ a: null, b: 1, c: undefined, d: false }, _.identity); Eliminará también valores false que no se desean aquí.