Fast library for manipulating plain objects using paths.
npm install path-propFast 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.
- 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.
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.
``sh`
npm install --save path-prop
`ts
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 }
`
Gets the value at path, returning fallback if it's not set.
Checks if a value is set at path.
Sets value at path.
Deletes the value at path`.
Transforms a potentially deep object into a flat object.
Transforms a flat object into a potentially deep object.
MIT © Fabio Spampinato