Catalog npm
PACKAGE EXPLORERView in registry

2tree

npm

Easily transform any arrays into trees.

buildnestedrecursivetreetstypescript
Versions collected4
Direct dependencies3From release 1.0.3
Last observed20 Oct, 19:19 UTC

README

Current package documentation

2Tree

With this package you can easily transform any arrays into trees.

Usage

You need to do three thins:

  1. Create a class ("product") instances of which will be used as tree items. This call must have a children property.
  2. Create a class that inherits TreeMaker and implement rawToProduct(), isContainer() and isChild() method.
  3. Create an instance of your "maker" class and call make() method.

That's all! You will get your tree in result!

Example

Let's say we want to make a tree from the following array:

[
    {
        "id": 1,
        "value": "Value 1"
    },
    {
        "id": 2,
        "value": "Value 2",
        "parent": 1
    },
    {
        "id": 3,
        "value": "Value 3"
    }
]

Firstly, we create a class to represent tree items:

class MyItem
{
    id: number;
    value: string;
    children: MyItem[];
}

Secondly, we need to create a maker class:

import TreeMaker from "2tree";

// ... MyItem class ...

class MyTreeMaker extends TreeMaker<any, MyItem>
{
    rawToProduct(raw: any): MyItem
    {
        let myItem = new MyItem;
            myItem.id = raw.id;
            myItem.value = raw.value;
        
        return myItem;
    }

    isContainer(raw: any)
    {
        return true;
    }

    isChild(raw: any, container: any)
    {
        return raw['parent'] === container['id'];
    }
}

Finally, let's make a tree:

let maker = new MyTreeMaker;

console.log(maker.make(json));

Limitation

Currenlty you can only select children consequentially. Returning false in isChild() method will close current container. I looking for a way select children anywhere in raw array.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 4

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.3Registry latest6 May 20223
1.0.25 May 20223
1.0.15 May 20223
1.0.05 May 20223

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
cmtv/2tree

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:19 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:e5151ed1b4077d722510d97eb0ccb906f596d699737eb81eeb3980dcf98c6389