【问题标题】:Filter object with another object用另一个对象过滤对象
【发布时间】: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 中的所有内容,而不是完全相同的值和数量。基本上我的过滤功能应该缩小用户的搜索范围。

【问题讨论】:

  • 请提供selectedIngredientsrecipes 集合的示例,以帮助用户为您提供帮助。

标签: reactjs object filter


【解决方案1】:

您当前正在检查ingredients 数组的所有元素是否都包含在filterIds 数组中。但是你需要检查filterIds数组的所有元素是否都包含在ingredients数组中。

return (filterIds.every(filterId => ingredients.indexOf(filterId) >= 0));

【讨论】:

    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2021-05-14
    • 2018-10-03
    • 2023-03-12
    相关资源
    最近更新 更多