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

2.0.0 • 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 200 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

Package Sidebar

Install

npm i path-prop

Weekly Downloads

244

Version

2.0.0

License

none

Unpacked Size

31.8 kB

Total Files

35

Last publish

Collaborators

  • fabiospampinato