1.3.0 • Published 8 years ago

j-walk v1.3.0

Weekly downloads
2
License
MIT
Repository
github
Last release
8 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

8 years ago

1.2.3

9 years ago

1.2.2

9 years ago

1.2.1

9 years ago

1.2.0

9 years ago

1.1.7

10 years ago

1.1.6

10 years ago

1.1.5

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago