1.3.9 • Published 2 years ago

tree-operate-j v1.3.9

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

功能介绍

  • 支持将数组数据转为树结构
  • 支持为已有的树绑定操作实例信息
  • 支持构建过程中的树的深度控制
  • 支持构建过程中为树节点注入 level 信息
  • 支持查询树的详细信息
  • 支持多根节点树的构建
  • 支持树结构数据扁平化回数组
  • 支持深度遍历
  • 支持自定义过滤节点
  • 支持自定义搜寻节点

快速使用

  1. 安装

    pnpm i tree-operate-j@latest
    or
    npm i tree-operate-j@latest
  1. 首先实例化树操作对象,实例化对象时可以传入 props 配置,如果不传将使用默认值。props 配置见 props 说明。

    import TreeOperate from 'tree-operate-j'
    const props = {
        id:'menuId',
        pid:'parentId',
        children:'subMenus',
    }
    const treeOperate = new TreeOperate(props)
  2. 使用树操作对象的 build 方法将数组构建为树结构数据

    treeOperate.build(arr)

    此方法会返回当前树操作对象实例,方便需要 build 后直接进行其他的操作。 此时可以 treeOperate.info 获取树的详细信息。或者 treeOperate.tree 直接获取树结构数据

  3. 如果你想为已有的树结构数据封装详细信息或者使用树操作类进行其他的树的操作,可以使用 buildTree 方法。 需要传入树结构数据,返回值和 build 一样返回当前树操作实例 注意:传入的树结构数据是多根节点树类型(数组类型),而不是某个根。

    console.log( new TreeOperate(props).buildTree(trees).info )

props说明

配置项数据类型默认值描述
idString'id'唯一标识的属性名的映射
pidString'pid'父级标识的属性名的映射
childrenString'children'子级容器的属性名的映射
levelString'level'构建树结构时需要向节点对象注入 level 的属性名
startLevelNumber.int1需要构建的树的层级起始值,startLevel > endLevel 不限制树深度。默认不限制
endLevelNumber.int0需要构建的树的层级结束值,endLevel < startLevel 不限制树深度。默认不限制

树的深度切分由 startLevel 与 endLevel控制,只切尾,不切头。

startLevel 值仅作为根节点的 level 标识,并不实际从某一层级开始切分。

而 endLevel 实际控制切分到树的某一层级(当 endLevel >= startLevel 时)。

实例方法

build

  • 参数1:Array
    • 符合构建树结构的一维数组
  • 返回值:当前树操作实例对象
  • 描述:将数据构建为树结构数据并存储在树操作实例中

buildTree

  • 参数1:Array
    • 树结构数据
  • 返回值:当前树操作实例对象
  • 描述:将已有的树结构数据与树操作实例绑定

getParentNodeById

  • 参数1:String|Number
    • 唯一标识ID
  • 参数2:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点对象
  • 描述:根据唯一标识获取其父节点

getRootById

  • 参数1:String|Number
    • 唯一标识ID
  • 参数2:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点对象
  • 描述:根据唯一标识获取其所在根节点

getNodeById

  • 参数1:String|Number
    • 唯一标识ID
  • 参数2:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点对象
  • 描述:根据唯一标识获取节点

getAncestorById

  • 参数1:String|Number
    • 唯一标识ID
  • 参数2:Boolean 可选
  • 参数3:Boolean 可选
    • 默认 false:正序,当前节点--->根节点。true:倒序,根节点--->当前节点
  • 参数4:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点数组|唯一标识数组
  • 描述:根据唯一标识获取祖籍节点列表,如果参数2为 true 则是获取的祖籍唯一标识列表

filter

  • 参数1:Funcation(Object)
    • 回调函数,回调函数中的参数为遍历过程中的每个节点对象,需要返回 Boolean 类型。
  • 参数2:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点数组
  • 描述:过滤提取树中符合条件的节点 包括父-->根 列表

findAll

  • 参数1:Funcation(Object)
    • 回调函数,回调函数中的参数为遍历过程中的每个节点对象,需要返回 Boolean 类型。
  • 参数2:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点数组
  • 描述:查找树中所有符合条件的节点 包括children 列表

findAny

  • 参数1:Funcation(Object)
    • 回调函数,回调函数中的参数为遍历过程中的每个节点对象,需要返回 Boolean 类型。
  • 参数2:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点数组
  • 描述:查找树中符合条件一个节点 包括children 对象(理论会找到第一个符合条件的节点)

flatten

  • 参数1:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:节点数组
  • 描述:将树结构数据扁平化为数组并 delete 所有节点的 children 属性 除非 children 原本就为空或空数组

for

  • 参数1:Array 可选
    • 目标树,如果有传入这个参数,此方法则对传入的树进行操作,否则此方法操作的是绑定在操作实例中的树
  • 返回值:void
  • 描述:遍历所有节点

实例方法表格展示

方法名参数类型返回值类型描述
buildArrayTreeOperate将数据构建为树结构数据并存储在树操作实例的 #trees 属性中
buildTreeArrayTreeOperate将已有的树结构数据与树操作实例绑定并存储在树操作实例的 #trees 属性中
getParentNodeByIdString|Number, ArrayObject根据唯一标识获取其父节点
getRootByIdString|Number, ArrayObject根据唯一标识获取其所在根节点
getNodeByIdString|Number, ArrayObject根据唯一标识获取节点
getAncestorByIdString|Number, Boolean,Boolean,ArrayArray根据唯一标识获取祖籍列表
filterFuncation(Object), ArrayArray过滤树中符合条件的节点列表
findAllFuncation(Object), ArrayArray查找树中所有符合条件的节点列表
findAnyFuncation(Object), ArrayObject查找树中符合条件一个节点对象(理论会找到第一个符合条件的节点)
flattenArrayArray将树结构数据扁平化为数组
forArrayvoid遍历所有节点

版本

  • 1.3.9

    • 补充文档
    • 1.3.8由于作者大意,出现严重问题,已将1.3.8版本移除
  • 1.3.7

    • 新增 for 实例方法,遍历所有节点
1.3.9

2 years ago

1.3.8

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.2.5

2 years ago

1.1.5

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago