dot-prop

  • Version 7.0.0
  • Published
  • 13.6 kB
  • 1 dependency
  • MIT license

Install

npm i dot-prop
yarn add dot-prop
pnpm add dot-prop

Overview

Get, set, or delete a property from a nested object using a dot path

Index

Functions

function deleteProperty

deleteProperty: (object: Record<string, any>, path: string) => boolean;
  • Delete the property at the given path.

    Parameter object

    Object or array to delete the path value.

    Parameter path

    Path of the property in the object, using . to separate each nested key. Use \\. if you have a . in the key.

    Returns

    A boolean of whether the property existed before being deleted.

    Example 1

    import {deleteProperty} from 'dot-prop';
    const object = {foo: {bar: 'a'}};
    deleteProperty(object, 'foo.bar');
    console.log(object);
    //=> {foo: {}}
    object.foo.bar = {x: 'y', y: 'x'};
    deleteProperty(object, 'foo.bar.x');
    console.log(object);
    //=> {foo: {bar: {y: 'x'}}}

function getProperty

getProperty: <ObjectType, PathType extends string, DefaultValue = undefined>(
object: ObjectType,
path: PathType,
defaultValue?: DefaultValue
) => ObjectType extends Record<string, unknown> | unknown[]
? Get<ObjectType, PathType> extends unknown
? DefaultValue
: Get<ObjectType, PathType>
: undefined;
  • Get the value of the property at the given path.

    Parameter object

    Object or array to get the path value.

    Parameter path

    Path of the property in the object, using . to separate each nested key. Use \\. if you have a . in the key.

    Parameter defaultValue

    Default value.

    Example 1

    import {getProperty} from 'dot-prop';
    getProperty({foo: {bar: 'unicorn'}}, 'foo.bar');
    //=> 'unicorn'
    getProperty({foo: {bar: 'a'}}, 'foo.notDefined.deep');
    //=> undefined
    getProperty({foo: {bar: 'a'}}, 'foo.notDefined.deep', 'default value');
    //=> 'default value'
    getProperty({foo: {'dot.dot': 'unicorn'}}, 'foo.dot\\.dot');
    //=> 'unicorn'
    getProperty({foo: [{bar: 'unicorn'}]}, 'foo[0].bar');
    //=> 'unicorn'

function hasProperty

hasProperty: (object: Record<string, any> | undefined, path: string) => boolean;
  • Check whether the property at the given path exists.

    Parameter object

    Object or array to test the path value.

    Parameter path

    Path of the property in the object, using . to separate each nested key. Use \\. if you have a . in the key.

    Example 1

    import {hasProperty} from 'dot-prop';
    hasProperty({foo: {bar: 'unicorn'}}, 'foo.bar');
    //=> true

function setProperty

setProperty: <ObjectType extends Record<string, any>>(
object: ObjectType,
path: string,
value: unknown
) => ObjectType;
  • Set the property at the given path to the given value.

    Parameter object

    Object or array to set the path value.

    Parameter path

    Path of the property in the object, using . to separate each nested key. Use \\. if you have a . in the key.

    Parameter value

    Value to set at path.

    Returns

    The object.

    Example 1

    import {setProperty} from 'dot-prop';
    const object = {foo: {bar: 'a'}};
    setProperty(object, 'foo.bar', 'b');
    console.log(object);
    //=> {foo: {bar: 'b'}}
    const foo = setProperty({}, 'foo.bar', 'c');
    console.log(foo);
    //=> {foo: {bar: 'c'}}
    setProperty(object, 'foo.baz', 'x');
    console.log(object);
    //=> {foo: {bar: 'b', baz: 'x'}}
    setProperty(object, 'foo.biz[0]', 'a');
    console.log(object);
    //=> {foo: {bar: 'b', baz: 'x', biz: ['a']}}

Package Files (1)

Dependencies (1)

Dev Dependencies (4)

Peer Dependencies (0)

No peer dependencies.

Badge

To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/dot-prop.

  • Markdown
    [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/dot-prop)
  • HTML
    <a href="https://www.jsdocs.io/package/dot-prop"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>