Skip to content

Latest commit

History

50 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

dlv(obj, keypath)NPMBuild

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 120 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])

importdelvefrom'dlv';letobj={a: {b: {c: 1,d: undefined,e: null}}};//use string dot notation for keysdelve(obj,'a.b.c')===1;//or use an array keydelve(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 specifieddelve(obj,'a.b.f')===undefined;//optional third parameter for default if the full key in path is missingdelve(obj,'a.b.f','foo')==='foo';//or if the key exists but the value is undefineddelve(obj,'a.b.d','foo')==='foo';//Non-truthy defined values are still returned if they exist at the full keypathdelve(obj,'a.b.e','foo')===null;//undefined obj or key returns undefined, unless a default is supplieddelve(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

MIT

About

Safe deep property access in 120 bytes. x = dlv(obj, 'a.b.x')

Topics

Resources

Stars

1.3k stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages