This library allows you to deal with deep nested arrays in JavaScript.
Navigate into nested collections can be tricky, so NestedJS try to get it easier.
You can find a live demo of NestedJS here.
Download the latest version of NestedJS and load the file Nested.min.js (on build folder) on your HTML page :
<script src="/path/to/Nested.min.js"></script>You just have to install ...
# with NPM
$ npm install nestedjs
# with Yarn
$ yarn add nestedjs... and load the package on your script
const NestedJS = require('nestedjs')
// OR
import NestedJS from 'nestedjs'Once package loaded, NestedJS must ne instanciate with a nested collection.
const collection = [...] // Nested data collection
const tree = new NestedJS(collection)IMPORTANT : The property of every node's children if there are, is named
childrenby default. You can change the name with the optionchildren_key.
The created instance transform the collection and add several properties and methods to each collection's node :
__nodeid: this property is unique and allows you to retrieve a specific node__parentid: tag the parent node id of a node if exists, null otherwise__rootid: tag the root node id of a node if exists, null otherwise__previd: tag the previous node id of a node if exists, null otherwise__nextid: tag the next node id of a node if exists, null otherwise__depth: tag the node depth (0 to n)
To know the added properties on each node you must debug your collection, or you can simply browse it with a recursive loop.
You can retrieve a node by his unique id :
const node = tree.retrieveNode(/* __nodeid node unique id */)This will returns a node which is an instance of the NestedJS's Node class. This class has several methods :
- returns original properties of the node :
node.properties- returns node unique id :
node.getId()- returns node parent unique id :
node.getParentId()- returns next node unique id :
node.getNextId()- returns previous node unique id :
node.getPreviousId()- check if node property exists :
node.hasProperty(key)- returns node property if exists, defaultValue otherwise :
node.getProperty(key, defaultValue)- set node's property :
node.setProperty(key, value)- returns an array of previous nodes if exists, null otherwise :
node.previousNodes()- returns previous node if exists, null otherwise :
node.previousNode()- returns true if the node has a predecessor, false otherwise :
node.hasPreviousNode()- returns an array of next nodes if exists, null otherwise :
node.nextNodes()- returns next node if exists, null otherwise :
node.nextNode()- returns true if the node has a successor, false otherwise :
node.hasNextNode()- returns an array of siblings nodes if exists, null otherwise
node.siblingsNodes()- returns an array of child nodes :
node.childNodes()- returns node's first child if it has, null otherwise :
node.firstChild()- returns node's last child if is has, null otherwise :
node.lastChild()- returns node's child by index if it has, null otherwise :
node.nthChild()- return true if the node has children, false otherwise :
node.hasChildNodes()- returns parent node if exists, null otherwise :
node.parentNode()- returns true if the node has an ancestor, false otherwise :
node.hasParentNode()- returns root node if exists, null otherwise :
node.rootNode()- returns true if the node has a root node, false otherwise :
node.hasRootNode()- returns current node breadcrumb :
node.breadcrumb()- returns NestedJS instance :
node.getTree()- returns node depth :
node.depth()Each node original properties are preserved and are transferred as properties of the NestedJS's
Nodeclass.
You also retrieve one or several nodes by a key/value couple search :
const nodes = tree.retrieveNodesBy('name', 'lorem')