Socket
Socket
Sign inDemoInstall

dlv

Package Overview
Dependencies
0
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    dlv

Safely get a dot-notated property within an object.


Version published
Weekly downloads
7.3M
decreased by-15.86%
Maintainers
1
Install size
6.59 kB
Created
Weekly downloads
 

Package description

What is dlv?

The dlv npm package is a safe deep property access utility. It allows you to access deeply nested properties within an object without the risk of throwing an error if a part of the path does not exist. It's particularly useful when dealing with complex data structures where some properties may be undefined or null.

What are dlv's main functionalities?

Safe property access

Access a deeply nested property without throwing if the path does not exist.

const dlv = require('dlv');
const obj = { a: { b: { c: 1 } } };
const value = dlv(obj, 'a.b.c'); // 1

Default value

Provide a default value if the deep property is undefined.

const dlv = require('dlv');
const obj = { a: { b: { } } };
const value = dlv(obj, 'a.b.c', 'default'); // 'default'

Access array indexes

Access an array index within a deeply nested structure.

const dlv = require('dlv');
const obj = { a: { b: [1, 2, 3] } };
const value = dlv(obj, ['a', 'b', 0]); // 1

Other packages similar to dlv

Readme

Source

dlv(obj, keypath) NPM Build

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.f') === undefined;

//optional third parameter for default if the full key in path is missing
delve(obj, 'a.b.f', 'foo') === 'foo';

//or if the key exists but the value is undefined
delve(obj, 'a.b.d', 'foo') === 'foo';

//Non-truthy defined values are still returned if they exist at the full keypath
delve(obj, 'a.b.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

MIT

Keywords

FAQs

Last updated on 22 May 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc