JavaScript:如何根据另一数组的值过滤对象数组?
过滤包含指定标签的对象数组
给定如下对象数组:
let mainArray = [ { "contentTitle": "Article 2 Test", "contentTags": [ "Movies", "Stories" ], "contentPagePath": "global/en/top-page/listing-page/article2.html" }, { "contentTitle": "Sub Article page", "contentTags": [ "test", "Podcasts" ], "contentPagePath": "global/en/top-page/listing-page/article1/sub-article-page.html" }, { "contentTitle": "Page title article", "contentTags": [ "books", "hotels" ], "contentPagePath": "global/en/top-page/listing-page/article1.html" }, { "contentTitle": "Article 5", "contentTags": [ "random", "random2" ], "contentPagePath": "global/en/top-page/listing-page/article-new5.html" }];
以及过滤标签数组:
let filterArray = ["Movies", "Podcasts"];
需要筛选出mainArray中contentTags包含filterArray里任意标签的对象,最终结果如下:
[ { "contentTitle": "Article 2 Test", "contentTags": [ "Movies", "Stories" ], "contentPagePath": "global/en/top-page/listing-page/article2.html" }, { "contentTitle": "Sub Article page", "contentTags": [ "test", "Podcasts" ], "contentPagePath": "global/en/top-page/listing-page/article1/sub-article-page.html" } ]
解决方案
可以使用数组的filter方法结合some方法实现需求:
const filteredArray = mainArray.filter(item => item.contentTags.some(tag => filterArray.includes(tag)) ); console.log(filteredArray);
代码说明
filter方法遍历mainArray,返回符合条件的对象组成的新数组。some方法检查当前对象的contentTags数组中是否存在至少一个标签在filterArray里,只要有一个匹配就返回true,该对象会被保留。includes方法用于判断filterArray是否包含当前遍历到的标签。
内容的提问来源于stack exchange,提问作者Pankaj
相关产品推荐
相关产品推荐

