array-nest
v1.1.1
Published
Converts an array of items to a tree of nested elements in an efficient way, works in both browser and node
Downloads
26
Maintainers
Readme
This small package converts a one dimensional array into a tree based on the elements' relationship in an efficient way.
Installation:
npm install array-nest
// OR
yarn add array-nest
The usage is:
nest(array, options)
Example:
import nest from 'array-nest';
const tree = nest([
{ id: 1, parent_id: null, name: 'A' },
{ id: 2, parent_id: 1, name: 'B' },
{ id: 3, parent_id: 2, name: 'C' },
{ id: 4, parent_id: null, name: 'D' },
{ id: 5, parent_id: 1, name: 'E' },
{ id: 6, parent_id: 4, name: 'F' },
{ id: 7, parent_id: 6, name: 'G' },
]);
console.log(tree);
The result:
[
{
id: 1,
parent_id: null,
name: 'A',
children: [
{
id: 2,
parent_id: 1,
name: 'B',
children: [
{
id: 3,
parent_id: 2,
name: 'C',
children: [],
},
],
},
{
id: 5,
parent_id: 1,
name: 'E',
children: [],
},
],
},
{
id: 4,
parent_id: null,
name: 'D',
children: [
{
id: 6,
parent_id: 4,
name: 'F',
children: [
{
id: 7,
parent_id: 6,
name: 'G',
children: [],
},
],
},
],
},
]
Overriding the default values:
import nest from 'array-nest';
const tree = nest([
{ code: 1, parent_code: '', name: 'A' },
{ code: 2, parent_code: 1, name: 'B' },
{ code: 3, parent_code: 2, name: 'C' },
{ code: 4, parent_code: '', name: 'D' },
{ code: 5, parent_code: 1, name: 'E' },
{ code: 6, parent_code: 4, name: 'F' },
{ code: 7, parent_code: 6, name: 'G' },
], {
idKey: 'code',
parentKey: 'parent_code',
rootParentsId: '',
childrenKey: 'subtree'
});
Supported options
:
- idKey: The equivalent of
id
key in the input array. default: 'id' - parentKey: The equivalent of
parent_id
key in the input array. default: 'parent_id' - childrenKey: What the nested property should be named in the resulting array. default: 'children'
- rootParentsId: The
id
of the root entries (The entries which have no parents themselves) default: null