Skip to content

flatTree

树形结构转扁平数组

引入版本

0.30.0

Demo

ts
import { flatTree } from '@wyfex/iutils'

/**
 * ================== 基础树扁平化 ==================
 */
const data1 = [
  {
    level: 0,
    name: '顶部',
    children: [
      {
        level: 1,
        name: '子项',
        children: [{ level: 2, name: '孙项' }]
      }
    ]
  }
]
console.log(JSON.stringify(flatTree(data1), null, 2))
// [
//   {
//     "level": 0,
//     "name": "顶部"
//   },
//   {
//     "level": 1,
//     "name": "子项"
//   },
//   {
//     "level": 2,
//     "name": "孙项"
//   }
// ]

const data2 = [
  {
    id: 1,
    parentId: 0,
    children: [{ id: 2, parentId: 1 }]
  }
]
console.log(JSON.stringify(flatTree(data2), null, 2))
// [
//   {
//     "id": 1,
//     "parentId": 0
//   },
//   {
//     "id": 2,
//     "parentId": 1
//   }
// ]

const data3 = [
  {
    uid: 1,
    pid: 0,
    name: '父节点1',
    children: [
      {
        uid: 2,
        pid: 1,
        name: '子节点A'
      },
      {
        uid: 3,
        pid: 1,
        name: '子节点B'
      }
    ]
  },
  {
    uid: 4,
    pid: 0,
    name: '父节点2'
  }
]
console.log(JSON.stringify(flatTree(data3), null, 2))
// [
//   {
//     "uid": 1,
//     "pid": 0,
//     "name": "父节点1"
//   },
//   {
//     "uid": 2,
//     "pid": 1,
//     "name": "子节点A"
//   },
//   {
//     "uid": 3,
//     "pid": 1,
//     "name": "子节点B"
//   },
//   {
//     "uid": 4,
//     "pid": 0,
//     "name": "父节点2"
//   }
// ]

/**
 * ================== 自定义 children 字段) ==================
 */
const data4 = [
  {
    id: 1,
    kids: [{ id: 2 }]
  }
]
console.log(JSON.stringify(flatTree(data4, { childrenKey: 'kids' }), null, 2))
// [
//   {
//     "id": 1
//   },
//   {
//     "id": 2
//   }
// ]

基于 MIT 许可发布