cloudMenu/src/utils/handleRecursiveNestedData.ts
2025-08-20 09:34:05 +08:00

33 lines
662 B
TypeScript

/**
* 递归处理嵌套数据的方法
* @param data 数据
* @param datumCb 对单条数据进行操作的回调
* @returns 处理过的数据
*/
const handleRecursiveNestedData = (
data: API.MenuItem[],
datumCb: (datum: API.MenuItem) => API.MenuItem,
): API.MenuItem[] => {
const res = [] as API.MenuItem[];
for (const datum of data) {
if (datum.hideInMenu) {
continue;
}
if (datum.children) {
res.push({
...datum,
children: handleRecursiveNestedData(datum.children, datumCb),
});
} else {
res.push(datumCb(datum));
}
}
return res;
};
export default handleRecursiveNestedData;