Typescript - получить массив, который удовлетворяет условию - PullRequest
0 голосов
/ 12 декабря 2018

Можно ли получить выходной массив из заданного, который содержит role = 1 без дубликата?Я использую угловой 6 машинопись.Существуют ли какие-либо функции обработки массива машинописных текстов для выполнения этой операции // Массив ввода

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'
             }
            ]      
  }

]

- Требуется вывод, если роль равна 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',
             },
            ]      
  }

1 Ответ

0 голосов
/ 12 декабря 2018

Вы должны отфильтровать массив и убедиться, что у вас 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'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...