88
GitHub - developit/dlv: Safe deep property access in 130 bytes. x = dlv(obj, &am...
source link: https://github.com/developit/dlv
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
dlv(obj, keypath)
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
Why?
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.
Installation
npm install --save dlv
Usage
delve(object, keypath, [default])
import delve from 'dlv'; let obj = { a: { b: { c: 1 d: undefined e: null } } }; //use string dot notation for keys delve(obj, 'a.b.c') === 1; //or use an array key delve(obj, ['a', 'b', 'c']) === 1; delve(obj, 'a.b') === obj.a.b; //returns undefined if the full key path does not exist and no default is specified delve(obj, 'a.b.c.f') === undefined; //optional third parameter for default if the full key in path is missing delve(obj, 'a.b.c.f', 'foo') === 'foo'; //or if the key exists but the value is undefined delve(obj, 'a.b.c.d', 'foo') === 'foo'; //Non-truthy defined values are still returned if they exist at the full keypath delve(obj, 'a.b.c.e', 'foo') === null; //undefined obj or key returns undefined, unless a default is supplied delve(undefined, 'a.b.c') === undefined; delve(undefined, 'a.b.c', 'foo') === 'foo'; delve(obj, undefined, 'foo') === 'foo';
Setter Counterparts
- dset by @lukeed is the spiritual "set" counterpart of
dlv
and very fast. - bury by @kalmbach does the opposite of
dlv
and is implemented in a very similar manner.
License
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK