export const changeMenu = (data: DataType): MenuDataType[] => { let menu: MenuDataType[] = []; data?.forEach((item) => { if (item.resType === 1) { //菜单 let p: MenuDataType = { path: item.resKey, name: item.resName, icon: item.resIcon, }; if (item.children && item.children.length > 0) { p.children = changeMenu(item.children); } menu.push(p); } }); return menu; };
时间: 2024-02-14 09:19:13 浏览: 167
这是一个 TypeScript 函数,接收一个 DataType 类型的参数 data(即一个数据类型为 DataType 的数组),返回一个 MenuDataType 类型的数组。
该函数的作用是将 DataType 类型的数据转换成 MenuDataType 类型的树形结构数据。具体实现过程如下:
1. 首先定义一个空数组 menu,用于存储转换后的树形结构数据。
2. 遍历传入的 data 数组,对每个元素进行判断。
3. 如果当前元素的 resType 属性为 1,说明该元素为一级节点,需要将其转换为一个 MenuDataType 对象,同时递归调用 changeMenu 函数,将该元素的 children 属性转换成 MenuDataType 对象的 children 属性。
4. 将转换后的 MenuDataType 对象 push 到 menu 数组中。
5. 最后返回 menu 数组,即为转换后的树形结构数据。
需要注意的是,该函数中的 DataType 和 MenuDataType 类型没有给出具体的定义,需要根据实际情况进行定义。另外,该函数中使用了递归调用,因此需要确保传入的数据结构是符合要求的,否则可能会导致递归调用的死循环。
相关问题
export const getButtonList = (data: DataType): MenuDataType[] => { let button: MenuDataType[] = []; data.forEach((item) => { let p = []; if (item.resType === 2) { p.push({ key: item.resKey, name: item.resName, icon: item.resIcon, }); } if (item.resType === 1 && item.children && item.children.length > 0) { let res = getButtonList(item.children); if (res && res.length > 0) { p.push(...res); } } button = [...p, ...button]; }); return button; };
这是一个 TypeScript 函数,接收一个 DataType 类型的参数 data(即一个数据类型为 DataType 的数组),返回一个 MenuDataType 类型的数组。
该函数的作用是从 DataType 类型的数据中提取出 resType 为 2 的元素,将其转换为 MenuDataType 类型的数组。具体实现过程如下:
1. 首先定义一个空数组 button,用于存储提取后的数据。
2. 遍历传入的 data 数组,对每个元素进行判断。
3. 如果当前元素的 resType 属性为 2,说明该元素为按钮,将其转换为一个 MenuDataType 对象并 push 到 p 数组中。
4. 如果当前元素的 resType 属性为 1 且其 children 属性存在且不为空,说明该元素为菜单,需要递归调用 getButtonList 函数,并将返回的结果 push 到 p 数组中。
5. 将 p 数组和 button 数组合并,并将合并后的结果赋值给 button 数组。
6. 最后返回 button 数组,即为提取后的 MenuDataType 类型的数组。
需要注意的是,该函数中的 DataType 和 MenuDataType 类型没有给出具体的定义,需要根据实际情况进行定义。另外,该函数中使用了递归调用,因此需要确保传入的数据结构是符合要求的,否则可能会导致递归调用的死循环。
阅读全文