Skip to content

mapFilterTreeData(treelikeData, filterFunc, mapFunc, [options])

说明

map 和 filter 的结合,需要注意的是顺序不能变,第二个参数同 filterTreeData,第三个参数同 mapTreeData,且第三个参数拿到的数据是已经筛选后的数据

参数

treelikeData(Array): 树形数据

filterFunc(Function): 同原生 filter

mapFunc(Function): 同原生 map

[options](Object): 配置项

[options.childrenKeyName='children'](String): 子数据的 key,默认为'children'

返回值

treelikeData(Array): 树形数据

使用

js
mapFilterTreeData(
  [
    { id: '1', title: '1', hasPermission: true },
    { id: '2', title: '2' },
    {
      id: '3',
      title: '3',
      hasPermission: true,
      children: [
        { id: '3-1', title: '3-1' },
        { id: '3-2', title: '3-2', hasPermission: true },
        { id: '3-3', title: '3-3', hasPermission: false },
      ],
    },
  ],
  item => item.hasPermission,
  item => ({ ...item, subTitle: 'already filter data' })
)

// [
//   {
//     id: '1',
//     title: '1',
//     hasPermission: true,
//     subTitle: 'already filter data',
//   },
//   {
//     id: '3',
//     title: '3',
//     hasPermission: true,
//     subTitle: 'already filter data',
//     children: [
//       {
//         id: '3-2',
//         title: '3-2',
//         hasPermission: true,
//         subTitle: 'already filter data',
//       },
//     ],
//   },
// ]