angularjs Angular js根据另一个对象数组中的值过滤对象数组

w41d8nur  于 2022-10-31  发布在  Angular
关注(0)|答案(1)|浏览(211)

我必须根据某些偏好来筛选对象数组。
我需要筛选的数组如下所示:

[
   {
      "id": "1",
      "type": "book",
      "name": "test"
   },
   {
      "id": "2",
      "type": "book2",
      "name": "test2"
   }
]

首选项如下所示:

[
   {
      'type': ["book", "book3"]
   }
]

过滤器应返回与首选项值匹配的所有对象。因此,所需的结果应为:

[
   {
      "id": "1",
      "type": "book",
      "name": "test"
   }
]

我已经尝试使用我在这里找到的示例中的以下函数:

const filtered = products.filter(a => this.preferences.some(b => {
      b.type == a.type
    } 
));

但是,我没有得到这个示例代码所期望的响应。

n53p2ov0

n53p2ov01#

试试这个

const filtered = products.filter(a => this.preferences.some(b => {
  return b.type.indexOf(a.type) > -1
} 
));

您尝试检查array是否等于string,这样它就不会返回true

相关问题