j-walk v1.3.0
j-walk
tiny dot notation JavaScript object getter/setter
Install
npm install j-walk
API
jwalk(*selector*).get(*key*)
returns
undefined
if not found
jwalk(*selector*).set(*key*, *value*)
create and set property value if
undefined
through the nesting chain. Stops new value creation at firstundefined
array selector
jwalk(*selector*).exists(*key*)
truthy assertion if property is defined
get
let jwalk = require('j-walk');
let base = {'root': 42};
jwalk(base).get('root'); // 42 jwalk(base).get('root.nested-a'); // undefined
let base = { 'root': { 'nested-a': { 'nested-b': { 'nested-c': 42 } }, 'sibling-a': 84 } };
jwalk(base).get('root.nested-a.nested-b.nested-c'); // 42 jwalk(base).get('root.nested-a.sibling-a'); // 84
let base = {'id': 2, value: 21}, {'id': 4, value: 42}, {'id': 6, value: 84, name: 'scniro'} ;
jwalk(base).get('id=4.value'); // 42 jwalk(base).get('id=5.value'); // undefined jwalk(base).get('name=scniro.value'); // 84
let base = { 'root': { 'collectionA': [ {id: 1}, {id: 2, collectionB: {id: 10, value: 21}, {id: 20, value: 42}, {id: 30, value: 84} }, {id: 3}] } };
jwalk(base).get('root.collectionA.id=2.collectionB.id=20.value') // 42
> `set`
```javascript
let base = {};
jwalk(base).set('root.nested.sub', 42);
jwalk(base).set('root.nested', { sub: 42 });
// base = { root: { sub: { nested: 42 } } }
let base = {
'root': [
{id: 1, value: 10},
{id: 2, value: 20},
{id: 3, value: 30}
]
};
jwalk(base).set('root.[id=2]', {other: 'foo'});
// 'root': [{id: 1, value: 10}, {id: 2, value: 20, other: 'foo'}, [...]
exists
let base = {'root': null}; jwalk(base).exists('root') // true jwalk(base).exists('root.nested') // false