gpt4 book ai didi

javascript - 过滤包含对象数组的对象数组

转载 作者:行者123 更新时间:2023-11-30 20:36:00 28 4
gpt4 key购买 nike

让我解释一下令人困惑的标题。

我有一系列类别和一系列产品。

产品数组是一个对象数组,其中一个键是类别,它本身是一个对象数组,我感兴趣的键之一是标题。

类别数组也是对象数组。

我想过滤产品数组以仅返回我选择的类别(在状态中设置)的产品

我有这个,但是它不起作用:

filterCategories = () => {
return this.state.products.filter((product => {
return product.categories.map((cat) => {
cat.title == this.state.chosenCategory
})
}))
}

这个方法看起来应该如此。据我所知,我通过映射每个产品然后映射到该产品类别并检查类别标题是否等于状态中的标题来过滤产品数组。显然我在某处出错了。谁能看到?

示例数据:

products = [
{
id: '123',
title: 'wine',
categories: [
{title: 'drinks'}
]
}
]

categories = [
{
id: '123',
title: 'drinks'
}
]

最佳答案

您似乎想测试任何 类别标题是否与 chosenCategory 匹配:因此,请使用 some 方法。此外,更好的是,如果您确定只有一个匹配类别,请使用 .find 而不是 filter。还要确保在内部函数的末尾返回一个值(你目前没有这样做),或者使用带有隐式返回的箭头函数:

filterCategories = () => (
this.state.products.find((product) => (
product.categories.some(({ title }) => (
title === this.state.chosenCategory
))
))
)

关于javascript - 过滤包含对象数组的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49829018/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com