Safely get a dot-notated path within a nested object, with ability to return a default if the full key path does not exist or the value is undefined
Smallest possible implementation: only 130 bytes.
You could write this yourself, but then you'd have to write tests.
Supports ES Modules, CommonJS and globals.
npm install --save dlv
delve(object, keypath, [default])
;let obj =a:b:c: 1d: undefinede: null;//use string dot notation for keys=== 1;//or use an array key=== 1;=== objab;//returns undefined if the full key path does not exist and no default is specified=== undefined;//optional third parameter for default if the full key in path is missing=== 'foo';//or if the key exists but the value is undefined=== 'foo';//Non-truthy defined values are still returned if they exist at the full keypath=== null;//undefined obj or key returns undefined, unless a default is supplied=== undefined;=== 'foo';=== 'foo';
- dset by @lukeed is the spiritual "set" counterpart of
dlvand very fast.
- bury by @kalmbach does the opposite of
dlvand is implemented in a very similar manner.