path-prop
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.2 • Public • Published

    Path Prop

    Fast library for manipulating plain objects using paths.

    This library is similar to dot-prop, but it achieves up to 3x better performance, it offers a couple of additional methods for dealing with flat objects and it has a few more restrictions.

    Features

    • Performant: it is up to 3x faster than dot-prop.
    • Lightweight: it has just a few tiny dependencies and it's comprised of about 100 lines of code.
    • Flat objects: a few additional methods are provided for flattening and unflattening objects.

    Restrictions

    In order to achieve maximum performance a few limitations/restrictions have been introduced:

    • If a property is set to undefined it will be considered as not set.
    • There's no way to escape dots in paths.
    • It's only supposed to manipulate objects, not functions etc.
    • It doesn't check if a property is owned or enumerable.

    Install

    npm install --save path-prop

    Usage

    import pp from 'path-prop';
     
    /* GET */
     
    let object = { foo: { bar: 123 } };
     
    pp.get ( object, 'foo' ); // => { bar: 123 }
    pp.get ( object, 'foo.bar' ); // => 123
    pp.get ( object, 'foo.bar.baz' ); // => undefined
    pp.get ( object, 'foo.bar.baz', 1 ); // => 1
     
    /* HAS */
     
    object = { foo: { bar: 123 } };
     
    pp.has ( object, 'foo' ); // => true
    pp.has ( object, 'foo.bar' ); // => true
    pp.has ( object, 'foo.bar.baz' ); // => false
     
    /* SET */
     
    pp.set ( { foo: { bar: 123 } }, 'bar', 1 ); // => { foo: { bar: 123 }, bar: 1 }
    pp.set ( { foo: { bar: 123 } }, 'foo.bar', 1 ); // => { foo: { bar: 1 } }
    pp.set ( { foo: { bar: 123 } }, 'foo.bar.baz', 1 ); // => { foo: { bar: { baz: 1 } } }
     
    /* DELETE */
     
    object = { foo: { bar: 123 } };
     
    pp.delete ( object, 'foo.bar' ); // => undefined
    console.log ( object ); // => { foo: {} }
     
    /* FLAT */
     
    object = { foo: { bar: 123, baz: 'test' }, bar: 1 };
     
    pp.flat ( object ); // => { 'foo.bar': 123, 'foo.baz': 'test', bar: 1 }
     
    /* UNFLAT */
     
    object = { 'foo.bar': 123, 'foo.baz': 'test', bar: 1 };
     
    pp.unflat ( object ); // => { foo: { bar: 123, baz: 'test' }, bar: 1 }

    API

    get ( object, path, fallback? )

    Gets the value at path, returning fallback if it's not set.

    has ( object, path )

    Checks if a value is set at path.

    set ( object, path, value )

    Sets value at path.

    delete ( object, path )

    Deletes the value at path.

    flat ( object )

    Transforms a potentially deep object into a flat object.

    unflat ( object )

    Transforms a flat object into a potentially deep object.

    License

    MIT © Fabio Spampinato

    Install

    npm i path-prop

    DownloadsWeekly Downloads

    42

    Version

    1.1.2

    License

    MIT

    Unpacked Size

    30.7 kB

    Total Files

    15

    Last publish

    Collaborators

    • avatar