javascript - 过滤器数组递归
问题描述
我正在寻找使用键“excludeInMenu”递归过滤我的表。我可以使用此代码过滤“项目”中的第一个表格但不能过滤第二个内容
{routes.filter(route => !route.excludeInMenu)
这是我要过滤的数组:
const routes: MenuRoute[] = [
{
key: 'invoice_show',
excludeInMenu: true
},
{
key: 'invoice_new'
},
{
key: 'template',
text: 'Template',
items: [
{
key: 'template_contract',
excludeInMenu: true
},
{
key: 'template_invoice'
}
]
}
];
我想过滤它并得到这个结果:
[
{
key: 'invoice_new'
},
{
key: 'template',
text: 'Template',
items: [
{
key: 'template_invoice'
}
]
}
];
解决方案
function filterItems(items){
return items.filter(item => !item.excludeInMenu)
}
filterItems(routes).forEach(route => {
if(route.items){
route.items = filterItems(route.items)
}
});
推荐阅读
- python - 尝试使用非常低级的 Python 编写简单脚本
- blazor - Blazor 页面从 3rd 方网站接收数据
- assembly - 创建简单的加法计算但编译时出错 [汇编代码]
- r - qgraph图例两行而不是一长
- visual-studio-code - VSCODE 中的 Eslint 停止工作(又一次)
- autodesk-forge - 使用设计自动化 API 从 Revit 模型导出明细表
- powerbi - Microsoft Power BI:RANKX 和结果聚合
- typescript - 如何声明具有可变数量属性的 TypeScript 接口?
- python - 如何在特定索引后将数字附加到 txt 文件
- unity3d - AR Foundation 4.0.2 使用 Unity2019.3 更新问题 TestCameraImage