根据字符串数组过滤对象数组
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
数组.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)
【讨论】:
以上是关于根据字符串数组过滤对象数组的主要内容,如果未能解决你的问题,请参考以下文章
HiveQL:如何编写查询以根据嵌套的 JSON 数组值选择和过滤记录