令人困惑的标题让我解释一下。
我有一系列的类别和一系列的产品。
产品数组是对象数组,键之一是类别,类别本身是对象数组,而我感兴趣的键之一是标题。
类别数组也是对象数组。
我想过滤产品数组,以仅返回我所选类别(状态已设置)的产品
我有这个,但是不起作用:
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'
}
]
看来您想测试任何类别标题是否与selectedCategory相匹配:因此,请使用some
方法。此外,更好的是,如果您确定只有一个匹配的类别,请使用.find
代替filter
。另外,请确保在内部函数的末尾(当前不执行此操作)返回一个值,或者使用带有隐式return的箭头函数:
filterCategories = () => (
this.state.products.find((product) => (
product.categories.some(({ title }) => (
title === this.state.chosenCategory
))
))
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句