diff --git a/README.md b/README.md index 1233207..2bbc717 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/javascript/purge-null-and-undefined-values-from-object.md b/javascript/purge-null-and-undefined-values-from-object.md new file mode 100644 index 0000000..41e9b5c --- /dev/null +++ b/javascript/purge-null-and-undefined-values-from-object.md @@ -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.