Skip to content
Utility package to get deeply nested values from objects. Supports arrays.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md
package.json
readme.js
test.js
yarn.lock

README.md

get-nested-value

This package safely returns the value at a requested path inside of an object. Best used on unpredictable deeply nested structures. Supports arrays as well.

const complex = { a: { b: [{ c: { d: 'hello!' } }] } };
console.log(getNestedValue('a.b.0.c.d', complex));
// => 'hello!'

Install

npm install get-nested-value --save
# or
yarn add get-nested-value

Example

import getNestedValue from 'get-nestedValue';

getNestedValue('some.path.to.key', object);
// or as an array of paths
getNestedValue(['some', 'path', 'to', 'key'], object);
// dealing with arrays in your object?
getNestedValue(['some', 'path', 'atIndex', 0, 'key'], object);
// dealing with arrays of arrays?
getNestedValue([0, 1, 2, 'key'], arrayOfArrays);
// see test.js for more examples if needed

Notes

Contract:

getNestedValue(
    @path: {Array.<string|number>|String|Number},
    @object: {Object|Array}
) => Any, throws Error if @path is invalid

Explained:

  • The @path must be a number or string, or an array of numbers/strings. (See examples above or test.js)
  • The @object should be object or array. The specified paths need not exist obviously.
  • If the @path exists in @object, then that value is returned. Whatever it might be.
  • If @path does not exist, undefined is returned.
  • An Error is thrown if @path is not valid.
    • You should also make sure the @object param is indeed an Object or Array. But this will not throw an Error.
You can’t perform that action at this time.