object-path-plus
v1.3.1
Published
Object path traversal with concatenation
Downloads
186
Maintainers
Keywords
Readme
object-path-plus
object-path-plus
is an object-path compatible library that also
provides the ability to synthesize values from multiple provided paths.
Currently, it only supports the .
delimited path format of object-path
.
Installation
npm install object-path-plus
or
yarn add object-path-plus
Usage
object-path
usage
To see basic object path usage, see object-path's documentation
Concatenating values
Concatenation with object-path-plus
is very simple, just add a +
sign!
You can concatenate resolve values from multiple object-path
s and you can
also concatenate string literals with resolved path values.
const { resolve } = require('object-path-plus');
resolve({ a: { b: 1 }, c: { d: 2 } }, 'a.b + c.d') === 3;
resolve({ a: { b: 'foo' }, c: { d: 'bar' } }, 'a.b + c.d') === 'foobar';
resolve({ a: { b: 1 }, c: { d: 2 } }, 'a.b + " - " + c.d') === '1 - 2';
resolve({ a: { b: 'foo' }, c: { d: 'bar' } }, 'a.b + " " + c.d') === 'foo bar';
resolve({
a: { b: 'foo' },
c: { d: 'bar' },
e: { f: [ 'baz', 'whiz' ] }
}, 'a.b + " " + c.d + " " + e.f.1') === 'foo bar whiz';
resolve({
a: { b: 'foo' },
c: { d: 'bar' },
e: { f: [ 0, 1 ] }
}, 'a.b + " " + c.d + " " + e.f.1') === 'foo bar 1';
Dynamic array lookups
You can also use a property to index within an array. Just use the []
syntax.
resolve({
firstkey: {index: 1},
arr: [{key: 1}, {key: 2}]
}, 'arr[firstkey.index].key') === 2
Validating object-path-plus paths
You can also test if a path is valid prior to trying to resolve a value with it.
const { validate } = require('object-path-plus');
validate('a.b') === true;
validate('a.b + c.d') === true;
validate('a.b + hello world') === false;