omit-deep-by-values
v3.0.1
Published
Recursively omit object keys by value. Zero dependencies, TypeScript support, works with nested objects and arrays.
Downloads
2,848
Maintainers
Readme
omit-deep-by-values
Recursively omit object keys by value. Zero dependencies, full TypeScript support.
Removes all keys from nested objects (and array elements) whose values match any entry in a provided list. Works with deeply nested structures and mixed arrays.
Note: Non-omitted properties that are objects lose their prototype chains. This library is best suited for plain JSON data objects, not typed object graphs with custom constructors.
Install
npm install omit-deep-by-valuesUsage
CommonJS
const omitDeepByValues = require('omit-deep-by-values')ESM / TypeScript
import omitDeepByValues from 'omit-deep-by-values'Examples
Omit keys with null values:
omitDeepByValues(
{ a: null, b: 'b', c: { b: null, d: 'd', e: { b: null, f: 'f', g: { b: 'b', c: null } } } },
[null]
)
// => { b: 'b', c: { d: 'd', e: { f: 'f', g: { b: 'b' } } } }Omit keys matching multiple values at once:
omitDeepByValues(
{ a: null, b: '', c: { b: undefined, d: { a: 'value', b: '', c: null, e: 'value', f: 'f' } } },
[null, undefined, '', 'value']
)
// => { c: { d: { f: 'f' } } }Works with arrays (removes matching array elements too):
omitDeepByValues(
['a', '', { b: '' }, { f: 'f', g: { b: 'b', c: '' } }],
['']
)
// => ['a', {}, { f: 'f', g: { b: 'b' } }]Clean up API responses before storing:
omitDeepByValues(apiResponse, [null, undefined, ''])TypeScript types
function omitDeepByValues<T>(body: T, valuesToOmit: unknown[]): TAPI
omitDeepByValues(body, valuesToOmit)
| Parameter | Type | Description |
|-----------|------|-------------|
| body | T | The object or array to process |
| valuesToOmit | unknown[] | List of values — any key whose value strictly equals (===) one of these will be removed |
Returns a new object/array with matching keys/elements removed at all levels of nesting. The input is not mutated.
Running tests
npm install && npm testContributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Author
License
Released under the MIT license.
