Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

DenQ/list-to-tree

Repository files navigation

list-to-tree

This lib is help-tool for convertation list to tree a data structure.

Attention

  • Recently I have rewritten the project and now it is based on IronTree - it allowed to do the project in unix way style and added flexibility. IronTree has a fairly rich interface.
  • The tree can now be sorted - you only need to pass your sorting method if you are not satisfied with the native sorting.

Install on npm

npm install list-to-tree --save

Usage

var LTT = require('list-to-tree');
var list = [
{
id: 1,
parent: 0
}, {
id: 2,
parent: 1
}, {
id: 3,
parent: 1
}, {
id: 4,
parent: 2
}, {
id: 5,
parent: 2
}, {
id: 6,
parent: 0
}, {
id: 7,
parent: 0
}, {
id: 8,
parent: 7
}, {
id: 9,
parent: 8
}, {
id: 10,
parent: 0
}
];

var ltt = new LTT(list, {
key_id: 'id',
key_parent: 'parent'
});
var tree = ltt.GetTree();

console.log( tree );
Result
[{
"id": 1,
"parent": 0,
"child": [
{
"id": 2,
"parent": 1,
"child": [
{
"id": 4,
"parent": 2
}, {
"id": 5,
"parent": 2
}
]
},
{
"id": 3,
"parent": 1
}
]
}, {
"id": 6,
"parent": 0
}, {
"id": 7,
"parent": 0,
"child": [
{
"id": 8,
"parent": 7,
"child": [
{
"id": 9,
"parent": 8
}
]
}
]
}, {
"id": 10,
"parent": 0
}];

Properties

  • tree - This property is IronTree type and have methods: add, remove, contains, sort, move, traversal, toJson, etc...
  • options
    • key_id (string) Field name for id item. Default: 'id'.
    • key_parent (string) Field name for parent id. Default: 'parent'.
    • key_child (string) Field name for children of item. Default 'child'.
    • empty_children (boolean) Flag for allow empty children property in item. Default: false.

Methods

  • constructor(list, options)
    • params:
      • list - array list with elements. Like { id: 5: parent: 1 }.
      • options - optional parameter. Object for describe flags and field names for tree.
  • .GetTree() This method will be return json tree
    • example:
      tree.GetTree()
  • .sort(callback) The custom sort method
    • callback(a, b) - a and b have IronTree\Node type and have methods: add, remove, get, set, sort, traversal, etc...
    • example:
      bid) { return vector ? 1 : -1; } else if (aid < bid) { return vector ? -1 : 1; } else { return 0 } }; } ltt.sort(compareById(false));">function compareById(vector) {
      return (a, b) => {
      const aid = Number(a.get('id'));
      const bid = Number(b.get('id'));
      if (aid > bid) {
      return vector ? 1 : -1;
      } else if (aid < bid) {
      return vector ? -1 : 1;
      } else {
      return 0
      }
      };
      }
      ltt.sort(compareById(false));

Testing

For run testing, typing on your console

npm test

Packages

Contributors