1.3.0 • Published 7 years ago

j-walk v1.3.0

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

j-walk

Build Status devDependency Status Coverage NPM Version

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 first undefined 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

License

MIT © 2017 scniro

1.3.0

7 years ago

1.2.3

8 years ago

1.2.2

8 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.1.7

8 years ago

1.1.6

8 years ago

1.1.5

8 years ago

1.1.3

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago