A small set of universal functions for working with objects, using dot-separated path strings.
Use:
const pdzOP = require('@pdz/objectpath');
Get examples:
const test = { a: { b: { c: 123 }, d: { e: 456 } } }
pdzOP.get(test, 'a.b.c');
// 123
pdzOP.get(test, ['a.b.c', 'a.b', 'x.y.z']);
// { 'a.b.c': 123, 'a.b': { c: 123 }, 'x.y.z': undefined }
Set examples:
const test = { a: { b: { c: 123 }, d: { e: 456 } } }
pdzOP.set(test, 'a.b.c', 789);
// { a: { b: { c: 789 }, d: { e: 456 } } }
pdzOP.set(test, { 'a.b.c': 789, 'a.f': 987 });
// { a: { b: { c: 789 }, d: { e: 456 }, f: 987 } }
pdzOP.set(test, ['a.b.c', 'a.d.e', 'a.f'], { g: 1 });
// { a: { b: { c: { g: 1 } }, d: { e: { g: 1 } }, f: { g: 1 } } }
Assign examples:
const test = { a: { b: { c: 123 }, d: { e: 456 } } }
pdzOP.assign(test, 'a.b', { c2: 789 });
// { a: { b: { c: 123, c2: 789 }, d: { e: 456 } } }
pdzOP.assign(test, { 'a.b': { c2: 789 }, 'a.d': { e2: 987 } });
// { a: { b: { c: 123, c2: 789 }, d: { e: 456, e2: 987 } } }
pdzOP.assign(test, ['a.b', 'a.d'], { f: 654 });
// { a: { b: { c: 123, c2: 789, f: 654 }, d: { e: 456, e2: 987, f: 654 } } }
Delete examples:
const test = { a: { b: { c: 123 }, d: { e: 456 } } }
pdzOP.del(test, 'a.b.c');
// { a: { b: { }, d: { e: 456 } } }
pdzOP.del(test, ['a.b.c', 'a.d']);
// { a: { b: { } } }