首页 > 解决方案 > 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',
             },
            ]      
  }

标签: javascriptangulartypescriptecmascript-6angular6

解决方案


您必须过滤您的数组并验证您的角色中有 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'));

推荐阅读