【发布时间】:2020-03-14 14:16:53
【问题描述】:
我希望就我正在努力解决的 React 中的一些过滤问题获得一些帮助。
我有 2 个对象,一个带有我想要过滤的食谱的对象和一个带有我想要过滤食谱对象的所有 ID 的对象 (filterIds)。每个配方都包含一个 json 字符串 (ingredients),我必须先对其进行解析,正在进行中...之后我想检查我的配方是否至少与我的 filtersIds 对象具有相同的成分。
我目前正在使用every,如果每种成分都在我的filtersIds 对象中,则返回true。但是,当我的食谱中的成分多于我的 filtersIds 对象中的成分时,它也会返回 false。以下是我的代码:
let filterIds = this.state.selectedIngredients.map(a => parseFloat(a.id));
const filteredArray = this.state.recipes.filter(recipe => {
let ingredients = JSON.parse(recipe.ingredients).map(a => parseFloat(a.id));
return (ingredients.every(ingredient => filterIds.indexOf(ingredient) >= 0));
});
代码有效,它仅在我过滤食谱的确切成分时返回我的食谱。我想要检查一个食谱是否至少包含filterIds 中的所有内容,而不是完全相同的值和数量。基本上我的过滤功能应该缩小用户的搜索范围。
【问题讨论】:
-
请提供
selectedIngredients和recipes集合的示例,以帮助用户为您提供帮助。