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

海象

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

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

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

类别数组也是对象数组。

我想过滤产品数组,以仅返回我所选类别(状态已设置)的产品

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

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章