Package Exports
- has-deep-value
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (has-deep-value) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
has-deep-value
Very small (only 179 bytes), lightweight, tested and dependency free utility function to (deeply) inspect Javascript objects. With has-deep-value you can easily check if any object contains a given property at any level deep, accounts for falsey values too. Also includes a curried version and supports object path (dot notation) to keep api usage clear.
Install
$ npm install --save has-deep-value
Usage
Note: use .hasDeepValue for the normal function and .has for the curried version
const hasDeepValue = require('has-deep-value').hasDeepValue;
hasDeepValue({ hello: 'world' }, 'hello'); //-> true
Accounts for all values, including all falsey values, e.g.:
''
false
NaN
0
undefined
null
Typescript
Included is an index.d.ts
file, Typescript should automatically pick this file up and apply the typings across your codebase.
import { hasDeepValue, has } from "has-deep-value";
hasDeepValue({ hello: "world" }, "hello"); //-> true
has("hello.world")({ hello: { world: "" } }); //-> true
Examples
Default
hasDeepValue({ hello: 'world' }, 'hello'); //-> true
hasDeepValue({ hello: { world: '' } }, 'hello.world'); //-> true
hasDeepValue({ hello: { world: { deep: null } } }, 'hello.world.deep'); //-> true
hasDeepValue({ hello: { world: { deep: () => 100; } } }, 'hello.world.deep'); //-> true
hasDeepValue({ hello: { world: '' } }, 'hello.world.deep'); //-> false
hasDeepValue('', ''); //-> false
hasDeepValue(undefined, 'undefined'); //-> false
hasDeepValue(false, 'false'); //-> false
hasDeepValue(null, 'null'); //-> false
hasDeepValue(0, 'hello'); //-> false
hasDeepValue(NaN, 'world'); //-> false
hasDeepValue(() => {}, 'f'); //-> false
Functional
const has = require('has-deep-value').has;
const hasHelloWorld = has('hello.world');
hasHelloWorld({ hello: { world: '' } }); //-> true
hasHelloWorld({ helloworld: '' }); //-> false
// Etc... the same usage of the default case
const objects = [{...}, {...}, {...}];
// Check if all objects conform to { hello: { world: '' } }
if (objects.map(hasHelloWorld).every(e => e)) {
...
}
// A different example
if (objects.map(has('account.profile.image')).every(e => e)) {
...
}
License
Copyright © 2018-2021, Alex Burghardt. Made available under the MIT license.