Javascript过滤器和一些对象数组



我有一个对象数组

[
{
appLearningItemId: 67
catalogues: (2) [ {id: 1041, value: "New Catalog"},
{id: 1058, value: "Test"}]
categories: (3) [{id: 1, value: "Soft Skills"},
{id: 3, value: "Non-technical"},
{id: 5, value: "Induction"}]
code: "CCE0013"
suppliers: (3) [{id: 1, value: "Company XYZ Ltd"},
{id: 2, value: "test c2"},
{id: 17, value: "new company"} ]
title: "07 Values & Beliefs"
type: {id: 11377, value: "Elearning"}
}, ... * 682 items
]

我必须用4个不同的选择框来过滤这个列表,目录,类别,供应商,类型。

我可以过滤列表的类型因为它不在像这样的数组中

const typeList = this.originalLearningItems.filter(item => item.type.value === val.typeSearch)

但对于目录、类别和供应商来说,它们是一个层次。我试过了

const listHasCatalogs = this.originalLearningItems.filter(item => item.catalogues.map(
catalogs => catalogs.some(catalog => catalog.value == val.catalogSearch)

但是我有目录。有些不是实物,我也试过目录。但我得到相同的错误。

根据嵌套的对象数组中的值过滤项的最佳方法是什么?

.some是属于Arrays的函数。你是在数组的每个元素上调用它。

试试这个

const listHasCatalogs = this.originalLearningItems
.filter(item => 
item.catalogues.some(catalog => catalog.value == val.catalogSearch)
)

最新更新