javascript - Typescript - 获取满足条件的数组
问题描述
是否可以从给定的包含 roles=1 的输出数组中获取没有重复的输出数组?我正在使用 Angular 6 打字稿。有没有打字稿数组处理函数来做这个操作 //Input Array
export const userMenus = [
{
name: 'Dashboard',
url: '/dashboards',
icon: 'icon-speedometer',
roles:'1,3,4'
},
{
name: 'Users',
url: '/Users',
icon: 'icon-bell',
roles:'1,2,3,4'
},
{
name: 'Article',
url: '/Users',
icon: 'icon-bell',
roles:'1,2,3,4',
children: [
{
name: 'Cards',
url: '/base/cards',
icon: 'icon-puzzle',
roles:'1,3,4',
},
{
name: 'Carousels',
url: '/base/carousels',
icon: 'icon-puzzle',
roles:'2,4',
},
{
name: 'Collapses',
url: '/base/collapses',
icon: 'icon-puzzle',
roles:'4'
}
]
}
]
--Need Output if role is 2. 删除角色字段中不包含 2 的项目
userMenus = [
{
name: 'Users',
url: '/Users',
icon: 'icon-bell',
roles:'1,2,3,4'
},
{
name: 'Article',
url: '/Users',
icon: 'icon-bell',
roles:'1,2,3,4',
children: [
{
name: 'Carousels',
url: '/base/carousels',
icon: 'icon-puzzle',
roles:'2,4',
},
]
}
解决方案
您必须过滤您的数组并验证您的角色中有 2 个:
const filteredUserMenus = userMenus.filter((userMenu) => {
return userMenu.roles.find((role) => role === '2');
});
简短的语法:
const filteredUserMenus = userMenus.filter((userMenu) =>
userMenu.roles.find((role) => role === '2'));
编辑:你的数据结构不好,角色不应该是一个字符串,而是一个角色数组。无论如何,如果您无法更改它,这里有一个解决方案:
const filteredUserMenus = userMenus.filter((userMenu) => {
return userMenu.roles.split(',').find((role) => role === '2');
});
简短的语法:
const filteredUserMenus = userMenus.filter((userMenu) =>
userMenu.roles.split(',').find((role) => role === '2'));
推荐阅读
- notepad++ - 替换一行中第一次出现的符号
- c++ - 在 C++ windows 程序中显示文本文件内容
- postgresql - 将不在子查询中的查询作为具有枚举值的条件
- php - 无法连接另一个表中的值(使用 laravel 5.5)
- matlab - 为什么 MATLAB 使用 `conv` 函数返回错误?
- javascript - 如何隐藏 tensorflow.js 代码和训练模型?
- javascript - JSLint:对象数组中出现意外的“]”
- html - 对 PWA 清单的更改不适用
- python - 在单行中嵌套 for 循环
- android - Android OpenCV FindRectangle 算法无法正常工作