1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00

Add Purge Null And Undefined Values From Object as a JavaScript TIL

This commit is contained in:
jbranchaud
2022-08-16 13:08:34 -05:00
parent c1f5486660
commit 1ac43cce9c
2 changed files with 42 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
_1229 TILs and counting..._
_1230 TILs and counting..._
---
@@ -431,6 +431,7 @@ _1229 TILs and counting..._
- [Object Initialization With Shorthand Property Names](javascript/object-initialization-with-shorthand-property-names.md)
- [Obtain Undefined Value With The Void Operator](javascript/obtain-undefined-value-with-the-void-operator.md)
- [Parse A Date From A Timestamp](javascript/parse-a-date-from-a-timestamp.md)
- [Purge Null And Undefined Values From Object](javascript/purge-null-and-undefined-values-from-object.md)
- [Random Cannot Be Seeded](javascript/random-cannot-be-seeded.md)
- [Reach Into An Object For Nested Data With Get](javascript/reach-into-an-object-for-nested-data-with-get.md)
- [Render An Array Of Elements With React 16](javascript/render-an-array-of-elements-with-react-16.md)

View File

@@ -0,0 +1,40 @@
# Purge Null And Undefined Values From Object
The low-level utilities provided by [`lodash`](https://lodash.com/) 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.
```javascript
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](https://lodash.com/docs/4.17.15#pickBy).
```javascript
> _.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`](https://lodash.com/docs/4.17.15#omitBy) and
[`_.isNil`](https://lodash.com/docs/4.17.15#isNil).
```javascript
> _.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.