0.5.1 • Published 22 days ago

@axolo/tree-array v0.5.1

Weekly downloads
-
License
MIT
Repository
github
Last release
22 days ago

tree-array

An array have children key and parentId key like tree.

install

npm i @axolo/tree-array

usage

import { tree2array, array2tree } from '@axolo/tree-array'
const tree = array2tree([/* array */])
const array = tree2array([/* tree */])

Vue CLI

By default babel-loader ignores all files inside node_modules. You can enable transpileDependencies to avoid unexpected untranspiled code from third-party dependencies.

// vue.config.js
module.exports = {
  transpileDependencies: ['@axolo/tree-array']
}

CommonJS

ES Modules is not supported in CommonJS. You can use UMD version.

const { tree2array, array2tree } = require('@axolo/tree-array/dist/index.umd.cjs')
const tree = array2tree(tree2array([/* tree */]))

api

functionreturndescription
randomId(prefix = '')stringgenerate random id with prefix, like my_r85cvfpqp8
array2tree(array, [options])arrayarray to tree with leaf and deep
arrayTrace(array, id, [options])arraytrace source of id from array
arrayDeep(array, [options], [deep = 1])intget max deep of array
arrayNode(array, id, [options])arrayget path of id from array by id, like [id1, id12, id121]
arrayParents(id, array, [options])arrayfind parents from array by id
tree2array(tree, [options])arraytree to array and generate id, parentId and leaf when undefined
treeFilter(tree, condition, [options])arrayget new tree filter by condition function like node => !node.hide
treeDeep(tree, [options], [deep = 1])intget max deep of tree
treeNode(tree, id, [options])arrayget path of id from tree by id, like [id1, id12, id121]
treePath(tree, id, [options])arrayget path of index from tree by id, like [0, 2, 1]
treeSub(tree, id, [options])objectget sub tree by id, like { id, parentId, children: [] }

options

paramstypedefaultdescription
idKeystringidkey of id
parentKeystringparentIdkey of parentId
childrenKeystringchildrenkey of children
leafKeystringleafkey of leaf
leafValueanytruevalue of leaf
deepKeystringdeepkey of deep
deepValuenumber0value of deep

data

The data format MUST like example with key defined in options.

array

[{
  "id": "chart",
  "path": "/chart",
  "parentId": null
}, {
  "id": "chartIndex",
  "path": "/chart/index",
  "parentId": "chart"
}, {
  "id": "chartIndexActive",
  "path": "/chart/index/active",
  "parentId": "chartIndex"
}, {
  "id": "chartIndexActiveMy",
  "path": "/chart/index/active/my",
  "parentId": "chartIndexActive"
}, {
  "id": "chartReview",
  "path": "/chart/review",
  "parentId": "chart"
}, {
  "id": "chartProject",
  "path": "/chart/project",
  "parentId": "chart"
}, {
  "id": "smile",
  "path": "/smile",
  "parentId": null
}, {
  "id": "smileIndex",
  "path": "/smile/index",
  "test": true,
  "parentId": "smile"
}]

tree

[{
  "id": "chart",
  "path": "/chart",
  "parentId": null,
  "children": [{
    "id": "chartIndex",
    "path": "/chart/index",
    "parentId": "chart",
    "children": [{
      "id": "chartIndexActive",
      "path": "/chart/index/active",
      "parentId": "chartIndex",
      "children": [{
        "id": "chartIndexActiveMy",
        "path": "/chart/index/active/my",
        "parentId": "chartIndexActive"
      }]
    }]
  }, {
    "id": "chartReview",
    "path": "/chart/review",
    "parentId": "chart"
  }, {
    "id": "chartProject",
    "path": "/chart/project",
    "parentId": "chart"
  }]
}, {
  "id": "smile",
  "path": "/smile",
  "parentId": null,
  "children": [{
    "id": "smileIndex",
    "path": "/smile/index",
    "test": true,
    "parentId": "smile"
  }]
}]

Yueming Fang 2022-09-04

0.5.0

22 days ago

0.5.1

22 days ago

0.4.0

26 days ago

0.3.5

30 days ago

0.3.4

1 month ago

0.3.3

4 months ago

0.3.0

5 months ago

0.3.2

5 months ago

0.3.1

5 months ago

0.2.1

8 months ago

0.2.0

11 months ago

0.1.0

1 year ago

0.0.7

1 year ago

0.0.5

1 year ago

0.0.6

1 year ago

0.0.4

1 year ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago