refine-deep
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

🧼 refine-deep

code style: airbnb code style: prettier

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);

Readme

Keywords

none

Package Sidebar

Install

npm i refine-deep

Weekly Downloads

1

Version

3.0.0

License

MIT

Unpacked Size

27 kB

Total Files

11

Last publish

Collaborators

  • smithki