refine-deep
v3.0.0
Published
Recursively remove falsey values from JS objects.
Downloads
6
Readme
🧼 refine-deep
Recursively remove falsey values from JavaScript objects.
💁🏼♂️ Introduction
A simple utility that exposes a lodash
-style interface for removing falsey values from JavaScript/TypeScript objects.
🔗 Installation
Install via yarn
(recommended):
yarn add refine-deep
Install via npm
:
npm install refine-deep
🛠️ Usage
Shallow functionality
import { refine } from 'refine-deep';
refine(['hello world', null, 0, undefined, '', [], {}]);
// => ['hello world']
refine({ helloWorld: '', foo: 'bar', baz: null});
// => { foo: 'bar' }
Recursive functionality
import { refineDeep } from 'refine-deep';
refineDeep([[null, [999]], { hello: 'world', foo: { bar: 1234, baz: null } }]);
// => [[[999]], { hello: 'world', foo: { bar: 1234 } }]
You can optionally specify a maximum recursion depth as the last argument to refineDeep
:
refineDeep(myCollection, depth);
refineDeep(myCollection, options, depth);
If no depth is indicated, Infinity
is assumed.
Configuration
You can configure refine
and refineDeep
with the same options:
All options are
false
by default
export interface RefineOptions {
ignoreNil?: boolean; // Retain `null` and `undefined` values.
ignoreNull?: boolean; // Retain `null` values.
ignoreUndefined?: boolean; // Retain `undefined` values.
ignoreEmptyAny?: boolean; // Retain empty arrays, objects, and strings.
ignoreEmptyArrays?: boolean; // Retain empty arrays.
ignoreEmptyObjects?: boolean; // Retain empty objects.
ignoreEmptyStrings?: boolean; // Retain empty strings.
ignoreZeros?: boolean; // Retain zeros.
}
refine(myCollection, { ignore*: true });
refineDeep(myCollection, { ignore*: true }, depth?: number);