Фильтровать массив объектов по массиву строк - PullRequest
0 голосов
/ 01 мая 2020

Возвращает пустой массив. Я также пытался использовать сам массив selectedRules[0], но получил тот же результат. Как можно сравнить фильтр на массиве объектов с массивом строк, чтобы получить массив объектов с каждым отфильтрованным правилом?

   const allRules = [
      {
       RuleName: "Two",
      RuleId: 2
        },
        {
          RuleName: "Three",
         RuleId: 3
        },
      {
        RuleName: "Four",
        RuleId:4
      }
    ];

    const selectedRules = ["2", "3"]

    const filteredRule = allRules.filter(x => x.RuleId === selectedRules)

    console.log(filteredRule) // []

1 Ответ

0 голосов
/ 01 мая 2020

Вам необходимо

  • Преобразовать правила в один и тот же тип, чтобы сравнение работало (строка не будет === числом)
  • Проверьте, является ли selectedRules массив .includes значение RuleId, которое повторяется:

const allRules = [{
    RuleName: "Two",
    RuleId: 2
  },
  {
    RuleName: "Three",
    RuleId: 3
  },
  {
    RuleName: "Four",
    RuleId: 4
  }
];

const selectedRules = ["2", "3"]

const filteredRule = allRules.filter(x => selectedRules.includes(String(x.RuleId)))

console.log(filteredRule)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...