无法根据嵌套数组过滤对象数组

时间:2021-01-11 23:33:52

标签: javascript arrays filter

我有一个看起来像这样的对象数组:

const nodes = [{
     post: 'a',
     categories: [{title:'Events'}, {title: 'Announcements'}]
     },
     {
     post: 'b',
     categories: [ {title:'Events'}]
     },
     {
     post: 'c',
     categories: [ {title:'Announcements'}]
     },
]

我需要根据这样的数组过滤它们:

const sectionCategory1 = ['Events', 'Announcements']
const sectionCategory2 = ['Events']

这样只会保留包含 sectionCategory 条目的帖子。 例如,如果我使用 sectionCategory2,过滤器将返回帖子 a 和 b。

我尝试了以下方法:

const categoryNodes = nodes.filter((node => sectionCategory2.includes( node.categories.map(n => n.title))))

const categoryNodes = nodes.filter((node => sectionCategory2.includes( node.categories)))

也没有用。 我确定我在这里遗漏了一些基本的东西,我知道以前也有人问过类似的问题,但我已经尝试了其他解决方案,并且一直在反对这个问题。

1 个答案:

答案 0 :(得分:0)

在特定节点的迭代中,您有 2 个数组可以相互检查:要包含的类别,例如 <div id='putText3'><div>,以及节点的类别标题,例如 ['Events']。因此,您需要一个嵌套循环,而不仅仅是单个 ['Events', 'Announcements']:迭代一个数组的每个元素以查看是否有任何匹配另一个数组中的元素。

.includes