---
title: "transform"
description: "遍历树并根据 `transformer` 函数返回一个具有新结构的新树。"
seo_title: "transform"
seo_description: "Transform every node of a tree with a mapper function, returning a new tree whose nodes carry reshaped data and the same structure."
canonical_url: "https://core.mhaibaraai.cn/docs/transformers/tree/transform"
---
# transform

> 遍历树并根据 \`transformer\` 函数返回一个具有新结构的新树。

## 用法

`transform` 方法遍历树的每个节点，并使用 `transformer` 函数将其转换为新的形态，从而构建一棵具有新结构的树。

```ts [example.ts]
import { Tree } from '@movk/core'

const tree = [{ id: 1, name: 'Admin', children: [{ id: 2, name: 'Guest' }] }]

const transformedTree = Tree.transform(tree, ({ node }) => ({
  key: node.id,
  title: node.name,
  children: [] // 转换器需要处理子节点
}))

/*
transformedTree 将会是:
[
  {
    key: 1,
    title: 'Admin',
    children: [
      { key: 2, title: 'Guest', children: [] }
    ]
  }
]
*/
```

## API

`transform<T extends TreeNode, R extends TreeNode>(tree: T[], transformer: (context: VisitorContext<T>) => R, config?: TreeConfig): R[]`

### 参数

**tree** (`T[]`) *required*: 源树形结构数组。

**transformer** (`(context: VisitorContext<T>) => R`) *required*: 一个转换函数，对树中的每个节点调用，返回新结构的节点对象。
该函数接收一个包含以下属性的 context 对象：当前正在处理的节点。节点的深度（根节点为 0）。从根节点到当前节点的路径数组（包含当前节点）。当前节点在其同级节点中的索引。

**config** (`TreeConfig`): 用于自定义树形结构中 id, pid, children 键名的配置对象。可选。指定节点唯一标识符的键名。默认为 "id"。可选。指定节点父级标识符的键名。默认为 "pid"。可选。指定子节点数组的键名。默认为 "children"。

### 返回值

**R\[\]**: 返回转换后的新树形结构数组。

## Changelog

See commit history for [src/transformers/tree/transform.ts](https://github.com/mhaibaraai/movk-core/commits/main/src/transformers/tree/transform.ts).


## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
