@universal-packages/object-navigation v1.1.0
Object Navigation
Object navigation tools to reach and analyze a path to an object property.
Install
npm install @universal-packages/object-navigationGlobal methods
navigateObject(subject: Object, path: string | string[], [options])
subjectObjectThe object to navigatepathstring | string[]The path to navigateoptionsNavigateOptionsbuildToTargetbooleanIf the intermediary nodes to get to the target does not exist, they will be created.separatorbooleandefault: '/'The separator to use to split the path into elements.
Will go deeply into the object and return a structure describing the traverse strategy to get to the target.
import { navigateObject } from '@universal-packages/object-navigation'
const objectToNavigate = {
a: {
b: {
c: {
d: {
value: 'value'
}
}
}
}
}
const result = navigateObject(objectToNavigate, 'a/b/c/d/value')
const value = result.targetNode[result.targetKey]A result of the navigation will look like this:
const result = {
elements: ['a', 'b', 'c', 'd', 'value'],
path: 'a/b/c/d/value',
pathTraverse: [
{
path: 'a',
node: {
b: {
c: {
d: {
value: 'value'
}
}
}
},
created: false
},
{
path: 'a/b',
node: {
c: {
d: {
value: 'value'
}
}
},
created: false
},
{
path: 'a/b/c',
node: {
d: {
value: 'value'
}
},
created: false
},
{
path: 'a/b/c/d',
node: {
value: 'value'
},
created: false
}
],
targetKey: 'value',
targetNode: {
value: 'value'
},
targetNodeIsRoot: false,
error: false
}resolvePath(path: string | string[], separator: string)
pathstring | string[]The path to resolveseparatorstringdefault: '/'The separator to use to split the path into elements.
Will return a clean string path without repeated separators nor trailing separators. It will join the path to a string if the path is provided as a string array.
deconstructPath(path: string | string[], separator: string)
pathstring | string[]The path to deconstructseparatorstringdefault: '/'The separator to use to split the path into elements.
Will return an array of strings with the elements of the path.
Typescript
This library is developed in TypeScript and shipped fully typed.
Contributing
The development of this library happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving this library.