Use when you don't know path to a key/prop. Finds null value prop. Returns all paths, then we can filter the path we want from list of paths or paths/values arrays.
- find all nested paths in an object for a given key/prop
- find all paths to a given value in an object
npm install nested-prop-paths -P
Require nested-property:
var propPaths = require("nested-prop-paths").propPaths;
var = propPaths(data, "prop");
see an example output run :
const runExample = require("nested-prop-paths").runExample;
console.log(runExample());
Try with mocked data = obj1
{
"id": "100",
"type": {
"services": "nice",
"id": "200"
},
"validations": [
{
"id": "300",
"name": "John",
"selection": {
"id": "400",
"values": {
"name": "Blob"
}
}
},
{
"id": "500",
"name": "Bill",
"selection": {
"values": {
"id": "600",
"name": "Bob"
}
}
}
]
}
const propPaths = require("nested-prop-paths").propPaths;
const results = propPaths(obj1,'id');
results
generated keys for prop 'id':
[ [ 'id' ],
[ 'type', 'id' ],
[ 'validations', '0', 'id' ],
[ 'validations', '0', 'selection', 'id' ],
[ 'validations', '1', 'id' ],
[ 'validations', '1', 'selection', 'values', 'id' ] ]
get values from paths
const getVals = require("neste-prop-paths").getVals;
console.log(getVals(result,obj1));
getVals yields :
[ '100', '200', '300', '400', '500', '600' ]
Try a sub node in mock: obj2
obj2 nested obj2.id.id: { id:
[ { name: 'John', selection: [Object] },
{ name: 'Bill', selection: [Object] } ] }
The nested obj propkey 'selection' exists, but we expect hasOwnProperty == false which returns false
'propPaths' returns the path(s) to prop/key 'selection' as
[ [ 'id', '0', 'selection' ], [ 'id', '1', 'selection' ] ]
also find
We also can 'find' a value
import {propPaths, getVals, find} from "nested-prop-paths";
console.log(find(obj1,'400'));
to get paths(s) for all values of '400' in **obj1**
[ 'validations', '0', 'selection', 'id' ]
MIT