Skip to content

@longmo-utils/common / mapTree

Function: mapTree()

ts
function mapTree<T, V>(
   tree, 
   mapper, 
   options?): V[];

根据条件重新映射给定树结构的节点

对树形结构的每个节点应用映射函数,生成新的树形结构

Type Parameters

Type ParameterDescription
T源树节点类型
V extends Record<string, any>目标树节点类型,必须是对象类型

Parameters

ParameterTypeDescription
treeT[]要映射的树结构的根节点数组
mapper(node) => V用于映射每个节点的函数
options?TreeConfigOptions配置选项

Returns

V[]

映射后的树形结构数组

Examples

typescript
const tree = [
  { id: 1, name: 'A', children: [{ id: 2, name: 'A-1' }] }
];

const result = mapTree(tree, node => ({
  ...node,
  label: `${node.name} (${node.id})`
}));
console.log(result);
// [
//   { id: 1, name: 'A', label: 'A (1)', children: [
//     { id: 2, name: 'A-1', label: 'A-1 (2)' }
//   ]}
// ]
typescript
const tree = [
  { value: 'a', children: [{ value: 'a-1' }] }
];

const result = mapTree(tree, node => ({
  text: node.value,
  checked: false
}));
console.log(result);
// [
//   { text: 'a', checked: false, children: [{ text: 'a-1', checked: false }] }
// ]
typescript
const tree = [
  { id: 1, items: [{ id: 2 }] }
];

const result = mapTree(
  tree,
  node => ({ ...node, mapped: true }),
  { childProps: 'items' }
);

Released under the MIT License.