Skip to content

find all nested paths in an object for a given key/prop

License

Notifications You must be signed in to change notification settings

HBDunn/nested-prop-paths

Repository files navigation

npm (.com)

Actively Maintained Travis (.com)

DeepScan grade

nested-prop-paths

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

Install

npm install nested-prop-paths -P

Use

Require nested-property:

var propPaths = require("nested-prop-paths").propPaths;
var = propPaths(data, "prop");

examples

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

About

find all nested paths in an object for a given key/prop

Resources

License

Stars

Watchers

Forks

Packages

No packages published