JSPM

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

Provides general functionality for dealing with nested properties in JavaScript objects.

Package Exports

  • @apphp/object-resolver
  • @apphp/object-resolver/dist/object-resolver.js

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 (@apphp/object-resolver) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Object Resolver

Provides general functionality for dealing with nested properties in JavaScript objects

 

Available methods:

  • hasNestedProperty
  • getNestedProperty
  • cloneObject

 

Install

Install / Uninstall with npm:

$ npm install @apphp/object-resolver

Uninstall

$ npm uninstall @apphp/object-resolver

Run Tests

$ npm run test

After tests running coverage report can be found in coverage directory

Run ESLint

To perform ESlint check run following command:

$ npm run eslint

To fix issues, found by ESLint run:

$ npm run eslint-fix

Usage

Require package:

const resolver = require('@apphp/object-resolver');
//import resolver from "@apphp/object-resolver";

hasNestedProperty(obj, propertyPath)

Check if nested property exists, if not return default value

const prop = resolver.hasNestedProperty(obj, 'innerObject.deepObject.value');
const prop = resolver.hasNestedProperty(obj, 'innerObject.deepObject.value', 'defaultValue');

getNestedProperty(objParam, propertyPath, defaultValue)

Get nested property exists and if not empty perform some action

const prop = resolver.getNestedProperty(obj, 'innerObject.deepObject.value')
if (prop) {
  // ...
}

fetchNestedProperty(obj, path)

Fetch chained nested property

const prop = objectGetNestedProperty(obj, 'prop');

cloneObject(obj)

Deep cloning of object

const objCopy = resolver.cloneObject(obj);

Examples

const obj = {
  innerObject: {
    deepObject: {
      value: 'Here I am'
    }
  }
};

console.log(resolver.hasNestedProperty(obj, 'innerObject.deepObject.value'));                         // true
console.log(resolver.hasNestedProperty(obj, 'innerObject.deepObject.wrongValue'));                    // false
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.value'));                         // 'Here I am'
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.wrongValue'));                    // undefined
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.wrongValue.oneMore', 'Oh-h-h'));  // 'Oh-h-h'
const obj = {
  innerObject: {
    deepObject: [
      { name: 'John' },
      { name: 'Nick' },
      { name: 'Ron' }
    ]
  }
};

console.log(resolver.hasNestedProperty(obj, 'innerObject.deepObject.0.name'));              // true
console.log(resolver.getNestedProperty(obj, 'innerObject.deepObject.1.name'));              // 'Nick'
const obj = { role: { role: { role: 'student' } }};
const role = objectGetNestedProperty(obj, 'role');
const obj = {'a':{'b':2}, 'c':3};
const objCopy = resolver.cloneObject(obj);

License

MIT