다른 배열 자바 스크립트의 매개 변수로 배열 루프

아이도스 오무 르자 코프

다양한 권한이 있습니다.

const permissions = ['search', 'reports', 'whitelist'];

그리고 메뉴가 있어요

const menus = [
  {
    text: 'Navigation',
    link: 'navigation',
    topic: 'all',
  },
  {
    text: 'Dictionary',
    link: 'dict',
    topic: 'src',
  },
  {
    text: 'Services',
    link: '/services',
    submenu: [
      {
        text: 'Check company',
        link: '/services/search',
        topic: 'search',
      },
      {
        text: 'Report statistic',
        link: '/services/reportstatistic',
        topic: 'another-topic',
      },
      {
        text: 'Report request',
        link: '/services/getrequestreport',
        topic: 'another-topic-2',
      },
      {
        text: 'Get whitelist',
        link: '/services/getresponsereport',
        topic: 'whitelist',
      },
      {
        text: 'Get data',
        link: '/services/requestdata',
        topic: 'reports',
      },
    ],
  },
];

나는 필터에 필요 menus가있는 경우 배열의 각 항목을 확인하기 위해 topic허가 중 하나에 등호를 permissions배열하고있는 경우 submenu다음 동일 또는 경우 각 항목 폼 하위 메뉴를 확인 topic ==='all'하고 어쨌든 새로운 메뉴로 하나를 추가 할 수 있습니다. 필터 후 예상 결과는 다음과 같습니다.

const newArrr = [
  {
    text: 'Navigation',
    link: 'navigation',
    topic: 'all',
  },
  {
    text: 'Services',
    link: '/services',
    submenu: [
      {
        text: 'Check company',
        link: '/services/search',
        topic: 'search',
      },
      {
        text: 'Get whitelist',
        link: '/services/getresponsereport',
        topic: 'whitelist',
      },
      {
        text: 'Get data',
        link: '/services/requestdata',
        topic: 'reports',
      },
    ],
  },
];

자체 루프를 만들려고했지만 올바르지 않습니다.

for (let menu of menus) {
  for (let permission of filteredPermissions) {
    if (menu.topic && (menu.topic == permission || menu.topic === 'all')) {
      newArr.push(menu);
    }
    if (menu.submenu) {
      for (let submenu of menu.submenu) {
        for (let permissionSecond of filteredPermissions) {
          if (!(submenu.topic == permissionSecond) || !(submenu == 'all')) {
            menu.submenu.splice(menu.submenu[submenu], 1);
          }
        }
      }
    }
  }
}
확실한 성능

이것이 내가 할 방법입니다. 먼저 .topic권한에 포함되어 있는지 여부에 따라 상위 배열을 필터링 한 다음 submenu배열 이있는 결과를 반복 하고 하위 배열 속성을 필터링 된 버전에 다시 할당합니다.

const permissions = ['search', 'reports', 'whitelist'];
permissions.push('all');

const menus=[{text:"Navigation",link:"navigation",topic:"all"},{text:"Dictionary",link:"dict",topic:"src"},{text:"Services",link:"/services",submenu:[{text:"Check company",link:"/services/search",topic:"search"},{text:"Report statistic",link:"/services/reportstatistic",topic:"another-topic"},{text:"Report request",link:"/services/getrequestreport",topic:"another-topic-2"},{text:"Get whitelist",link:"/services/getresponsereport",topic:"whitelist"},{text:"Get data",link:"/services/requestdata",topic:"reports"}]}];

const filteredMenus = menus.filter(
  item => !item.topic || permissions.includes(item.topic)
);
filteredMenus
  .filter(item => item.submenu)
  .forEach(item => item.submenu = item.submenu.filter(
    subitem => permissions.includes(subitem.topic)
  ));
console.log(filteredMenus);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바 스크립트에서 다른 매개 변수를 사용하여 배열을 반복하기 위해 루프 다시 시작 / 재사용

분류에서Dev

자바 스크립트 배열로 배열하는 PHP 루프

분류에서Dev

자바 스크립트에 설정된 다른 배열의 키로 배열 객체를 매핑하는 방법

분류에서Dev

자바 배열을 자바 스크립트 매개 변수로 보내기

분류에서Dev

자바 스크립트 배열 루프 변수가 정의되지 않았습니다.

분류에서Dev

자바 스크립트의 for 루프에서 배열의 문자열 요소의 길이를 변수로 설정

분류에서Dev

다른 배열의 순서로 자바 스크립트 정렬

분류에서Dev

자바 스크립트의 다른 배열을 기준으로 배열 정렬

분류에서Dev

bash : 연관 배열을 매개 변수로 다른 스크립트에 전달

분류에서Dev

자바 스크립트 배열 및 .forEach 루프 인수

분류에서Dev

다른 배열 내부의 자바 스크립트 배열

분류에서Dev

배열 자바 스크립트 내부에서 개체 매개 변수 표시

분류에서Dev

국가의 자바 스크립트 배열을 새 배열로 매핑

분류에서Dev

인수 배열 대 자바 스크립트에서 매개 변수 지정

분류에서Dev

다차원 PHP 배열을 자바 스크립트 배열로

분류에서Dev

for 루프 자바 스크립트 외부에서 배열 변수에 액세스

분류에서Dev

다른 변수의 배열을 결합하여 임의로 자바 스크립트를 채 웁니다.

분류에서Dev

다른 매개 변수 자바 스크립트를 기반으로 문자열 만들기

분류에서Dev

자바 스크립트에서 URL 배열 매개 변수를 얻는 방법

분류에서Dev

배열이있는 자바 스크립트 직렬화 매개 변수

분류에서Dev

다른 키로 자바 스크립트 배열 객체 정렬

분류에서Dev

다른 함수의 자바 스크립트 함수 배열 질문

분류에서Dev

자바 스크립트의 다차원 배열로 푸시

분류에서Dev

자바 스크립트는 하나의 다차원 배열을 다른 다차원 배열로 푸시

분류에서Dev

mysql 값을 PHP 배열로 가져온 다음 배열의 자바 스크립트 변수에 할당 한 다음 자바 스크립트 함수에 입력

분류에서Dev

자바 스크립트 개체를 만든 다음 for 루프를 통해 배열 채우기

분류에서Dev

루프 문 내의 명령에 배치 스크립트의 매개 변수를 올바르게 전달할 수 없습니다.

분류에서Dev

매개 변수를 기반으로 문자열 배열을 다른 문자열 배열로 변환

분류에서Dev

한 배열 값을 다른 배열의 매개 변수로 설정

Related 관련 기사

  1. 1

    자바 스크립트에서 다른 매개 변수를 사용하여 배열을 반복하기 위해 루프 다시 시작 / 재사용

  2. 2

    자바 스크립트 배열로 배열하는 PHP 루프

  3. 3

    자바 스크립트에 설정된 다른 배열의 키로 배열 객체를 매핑하는 방법

  4. 4

    자바 배열을 자바 스크립트 매개 변수로 보내기

  5. 5

    자바 스크립트 배열 루프 변수가 정의되지 않았습니다.

  6. 6

    자바 스크립트의 for 루프에서 배열의 문자열 요소의 길이를 변수로 설정

  7. 7

    다른 배열의 순서로 자바 스크립트 정렬

  8. 8

    자바 스크립트의 다른 배열을 기준으로 배열 정렬

  9. 9

    bash : 연관 배열을 매개 변수로 다른 스크립트에 전달

  10. 10

    자바 스크립트 배열 및 .forEach 루프 인수

  11. 11

    다른 배열 내부의 자바 스크립트 배열

  12. 12

    배열 자바 스크립트 내부에서 개체 매개 변수 표시

  13. 13

    국가의 자바 스크립트 배열을 새 배열로 매핑

  14. 14

    인수 배열 대 자바 스크립트에서 매개 변수 지정

  15. 15

    다차원 PHP 배열을 자바 스크립트 배열로

  16. 16

    for 루프 자바 스크립트 외부에서 배열 변수에 액세스

  17. 17

    다른 변수의 배열을 결합하여 임의로 자바 스크립트를 채 웁니다.

  18. 18

    다른 매개 변수 자바 스크립트를 기반으로 문자열 만들기

  19. 19

    자바 스크립트에서 URL 배열 매개 변수를 얻는 방법

  20. 20

    배열이있는 자바 스크립트 직렬화 매개 변수

  21. 21

    다른 키로 자바 스크립트 배열 객체 정렬

  22. 22

    다른 함수의 자바 스크립트 함수 배열 질문

  23. 23

    자바 스크립트의 다차원 배열로 푸시

  24. 24

    자바 스크립트는 하나의 다차원 배열을 다른 다차원 배열로 푸시

  25. 25

    mysql 값을 PHP 배열로 가져온 다음 배열의 자바 스크립트 변수에 할당 한 다음 자바 스크립트 함수에 입력

  26. 26

    자바 스크립트 개체를 만든 다음 for 루프를 통해 배열 채우기

  27. 27

    루프 문 내의 명령에 배치 스크립트의 매개 변수를 올바르게 전달할 수 없습니다.

  28. 28

    매개 변수를 기반으로 문자열 배열을 다른 문자열 배열로 변환

  29. 29

    한 배열 값을 다른 배열의 매개 변수로 설정

뜨겁다태그

보관