The low-level utilities provided by lodash
offer a
couple ways to remove all the null
and undefined
values from an object.
First, here is an object that I want to compact by removing all nil
(null
and undefined
) values.
const data = {
hello: 'world',
list: [1,2,3],
status: undefined,
published_at: null,
points: 0
}
One method of doing this is with the _.pickBy
function.
> _.pickBy(data)
//=> { hello: 'world', list: [1,2,3] }
Because it defaults to picking truthy values, the points: 0
is also going
to be stripped out.
Another method which allows us to more directly target just null
and
undefined
uses _.omitBy
and
_.isNil
.
> _.omitBy(data, _.isNil)
//=> { hello: 'world', list: [1,2,3], points: 0 }
Notice this approach only removes the null
and undefined
key-value pairs.
The points: 0
is left in.