【问题标题】:Filter an array of objects against array of strings根据字符串数组过滤对象数组
【发布时间】:2020-08-15 11:41:14
【问题描述】:

返回一个空数组。我也尝试过使用 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) // []

【问题讨论】:

  • 你问的问题不是很清楚。请提供您正在采取的步骤,结果是什么以及您预计会发生什么?问题的表述方式应该假设读者对您的实现一无所知。

标签: javascript arrays reactjs object filter


【解决方案1】:

你需要

  • 将规则转换为相同的类型,以便进行比较(字符串不会将=== 转换为数字)
  • 检查selectedRules数组.includesRuleId值是否被迭代:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 2019-04-04
    • 2022-11-24
    • 2015-03-24
    • 2021-12-15
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多