hierarchy-js
Version:
Elegant and lightweight library for working with data structures
123 lines (104 loc) • 2.76 kB
Markdown
and lightweight library for working with data structures
[](https://badge.fury.io/js/hierarchy-js)
[](https://travis-ci.com/maxmarinich/hierarchy-js)
[](https://codecov.io/gh/maxmarinich/hierarchy-js)
* Creating a tree structure from a flat list
* Creating a flat list from a tree structure
* Flexible parametrization
```apacheconfig
npm install hierarchy-js
```
* `createTreeHierarchy (elements, options)`
* `createFlatHierarchy (elements, options)`
- elements, `[]` - the array on which the passage is carried out.
- options, `{}` - props for parametrization
```javascript
{
id: 'id', // find item by this key
parentId: 'parentId', // find parent by this key
children: 'children', // create or find children by this key
excludeParent: false, // if `true`, not include root parents to result
saveExtractedChildren: false, // if `true`, not delete children list from descendants
}
```
```javascript
import { createTreeHierarchy } from 'hierarchy-js'
const flatList = [
{ id: 1 },
{ id: 2, parentId: 1 },
{ id: 3, parentId: 2 },
{ id: 4, parentId: 'any' },
]
const tree = createTreeHierarchy(flatList)
// tree
[
{
"id": 1,
"children": [
{
"id": 2,
"parentId": 1,
"children": [
{
"id": 3,
"parentId": 2
}
]
}
]
},
{
"id": 4,
"parentId": "any"
}
]
```
```javascript
import { createFlatHierarchy } from 'hierarchy-js'
const options = {
id: 'itemId',
parentId: 'parentItemId',
children: 'items',
}
const tree = [
{
itemId: 1,
items: [
{
itemId: 2,
parentItemId: 1,
items: [
{
itemId: 3,
parentItemId: 2,
},
],
},
],
},
{
itemId: 4,
parentItemId: 'any',
},
]
const faltList = createFlatHierarchy(tree, options)
// faltList
[
{ itemId: 1 },
{ itemId: 2, parentItemId: 1 },
{ itemId: 3, parentItemId: 2 },
{ itemId: 4, parentItemId: 'any' },
]
```
```apacheconfig
npm test
```
Elegant