function getSidebar(sidebar: Sidebar[], role: number) { let arr = [] sidebar.forEach(item => { if (item.role && item.role.includes(role)) { arr.push(item) } else if (item.children) { let children = getSidebar(item.children, role) if (children.length) { item.children = children arr.push(item) } } }) return arr }优化这段代码
时间: 2024-02-25 20:59:49 浏览: 123
fxp-jquery-sidebar:jQuery和Hammer.js的响应式和流畅的侧边栏
可以尝试使用递归优化这段代码,如下所示:
```
function getSidebar(sidebar: Sidebar[], role: number): Sidebar[] {
const arr: Sidebar[] = [];
for (const item of sidebar) {
if (item.role && item.role.includes(role)) {
arr.push(item);
} else if (item.children) {
const children = getSidebar(item.children, role);
if (children.length) {
item.children = children;
arr.push(item);
}
}
}
return arr;
}
```
在这个优化版本中,我们使用 `for-of` 循环代替了 `forEach`,并且使用 `const` 替换了 `let`。我们还将函数的返回类型指定为 `Sidebar[]`。最重要的是,我们使用递归代替了 `if-else` 语句,这可以提高代码的可读性和可维护性。
阅读全文