Sets the value at path of object.
$ npm install --save object-set
For more use-cases see the tests
var set = require('object-set');
var object = { 'a': [{ 'b': { 'c': 3 } }] };
set(object, 'a[0].b.c', 4);
// => { 'a': [{ 'b': { 'c': 4 } }] }
set({ foo: { bar: 'baz' } }, 'foo.arr[0]', 3);
// => { foo: {bar: 'baz', arr: [3] } }
set({ foo: { bar: 'baz' } }, 'foo.arr[1]', 3);
// => { foo: {bar: 'baz', arr: [, 3] } }
set({ foo: { bar: 'baz' } }, 'foo.obj.key', 3);
// => { foo: {bar: 'baz', obj: { key: 3 } } }
set(null, 'foo.obj.key', 3);
// => null
set({ foo: 1 }, 'foo.obj.key', 3);
// => { foo: 1 }
Use it to functionally create an object:
Array.from('12345')
.map(parseFloat)
.reduce((o, n) => set(o, n, n**2), {})
// => { 1: 1, 2: 4, 3: 9, 4: 16, 5: 25 }
- object-unset - Removes the property at path of object.
- object-at - Get object's property according to the path.
- object-has - Checks if path is a direct property of object.
- to-path - Converts string to a property path array.
Pull requests and stars are highly welcome.
For bugs and feature requests, please create an issue.