Home Reference Source

@loopmode/defined

A utility function for extracting defined values from an object.

Installation

Install the package in your project.

Using yarn:

yarn add @loopmode/defined

Using npm:

npm install @loopmode/defined --save

Usage

In the default configuration, you import the function and pass it an object. It returns all values that are not undefined or an empty object.

import getDefined from '@loopmode/defined';

const obj = {
    a: 'a',
    b: null,
    c: undefined,
    d: {},
    e: 0
};

const defined = getDefined(obj); // {a: 'a', b: null, e: 0}

The value null is not omitted per default, as it's common to send it to server backends in order to clear values.

Empty objects are omitted due to the original use case involving react, state and changes.

Options

drop

An array of values that will be omitted if they strictly match. Defaults to [undefined].

import getDefined from '@loopmode/defined';

const obj = {
    a: 'a',
    b: null,
    c: undefined
};

console.log(getDefined(obj)); // {a: 'a', b: null}
console.log(getDefined(obj, { drop: [undefined, null] })); // {a: 'a'}

keepObjects

A boolean flag for whether to keep values that are an empty object without keys. Defaults to false.

import getDefined from '@loopmode/defined';

const obj = {
    a: 'a',
    b: {}
};

console.log(getDefined(obj)); // {a: 'a'}
console.log(getDefined(obj, { keepObjects: true })); // {a: 'a', b: {}}