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

Posted

技术标签:

【中文标题】根据字符串数组过滤对象数组【英文标题】: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) // []

【问题讨论】:

你问的问题不是很清楚。请提供您正在采取的步骤,结果是什么以及您预计会发生什么?问题的表述方式应该假设读者对您的实现一无所知。 【参考方案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)

【讨论】:

以上是关于根据字符串数组过滤对象数组的主要内容,如果未能解决你的问题,请参考以下文章

HiveQL:如何编写查询以根据嵌套的 JSON 数组值选择和过滤记录

从过滤数组和主数组中删除相同的对象

使用 NSPredicate 搜索/过滤自定义类数组

NSPredicate 根据本地化字符串条目过滤数组

基于单独数组中的对象过滤 NSDictionaries 数组

使用对象数组过滤字符串文档