JSPM

has-deep-value

1.1.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 121
  • Score
    100M100P100Q68334F
  • License MIT

An utility function to check if any arbitrary object has any property on any deep level.

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.