根据字符串数组过滤对象数组

时间:2020-04-30 23:55:16

标签: javascript arrays reactjs object filter

这将返回一个空数组。我也尝试过使用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 :(得分:0)

您需要

  • 将规则转换为相同类型,以便进行比较(字符串不会===成为数字)
  • 检查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)

相关问题