如何筛选嵌套数组对象中分类匹配指定字符串数组的元素
筛选功能实现方案
实现思路
- 先处理mainobj的两层嵌套结构,提取出所有待筛选的文章对象
- 对每个对象的category字段做匹配:只要有任意分类存在于筛选数组
categoryfilterArray中,就保留该对象 - 额外增加字符串去首尾空格的逻辑,兼容原数据中category值带多余空格的情况
实现代码
现代JS环境写法(推荐)
const filteredResult = mainobj // 打平两层嵌套的数组结构,得到所有文章对象的一维数组 .flat(2) .filter(article => { // 只要有一个分类命中筛选规则就保留 return article.category.some(cate => categoryfilterArray.includes(cate.trim()) ) }) // 测试输出筛选结果 console.log(filteredResult)
兼容旧环境写法
如果运行环境不支持flat()方法,可以用多层遍历提取所有对象:
// 先提取所有文章对象到一维数组 const allArticles = [] mainobj.forEach(layer1 => { layer1.forEach(layer2 => { allArticles.push(...layer2) }) }) // 筛选逻辑和上面一致 const filteredResult = allArticles.filter(article => { return article.category.some(cate => categoryfilterArray.includes(cate.trim()) ) })
结果说明
按照你给出的示例数据,最终筛选结果会返回两个文章对象:
- 包含
Sorare、Bundesliga分类的NFT新闻对象 - 包含
Bitcoin分类的BTC价格新闻对象
内容的提问来源于stack exchange,提问作者Mohammed salim ali
相关产品推荐
相关产品推荐

