33 lines
662 B
TypeScript
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;
|