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