javascript - 如何根据数组的嵌套数组之一的值来过滤数组?

标签 javascript arrays loops filter

假设我有一个遵循以下模式的对象数组:

var posts = [
    {
        title: post_ab,
        category_array : [
            { id: 1, slug: category-a },
            { id: 2, slug: category-b }
        ]
    },
    {
        title: post_ac,
        category_array : [
            { id: 1, slug: category-a },
            { id: 3, slug: category-c }
        ]
    },
    {
        title: post_bc,
        category_array : [
            { id: 2, slug: category-b },
            { id: 3, slug: category-c }
        ]
    }
]

我正在尝试过滤上述数组,并且仅返回category_array 包含与指定值匹配的 slug 的值。

例如,如果我想过滤“category-c”,则只会返回第二个和第三个值(post_ac 和 post_bc)。

我尝试过使用嵌套过滤器,但没有任何结果:

var currentCategory = 'category-b';

var filteredPosts = function( posts ) {
    return posts.filter( function( post ){
        return post.category_array.filter( function( category ){
            return category.slug === currentCategory;
        })
    })
}

最佳答案

您必须使用Array.prototype.some()在内循环中:

var filteredPosts = function(posts) {
    return posts.filter(function(post){
        return post["category_array"].some(function(category){
            return category.slug === currentCategory;
        });
    });
}

它将返回一个可在 .filter() 回调中使用的 boolean 结果。

关于javascript - 如何根据数组的嵌套数组之一的值来过滤数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43631697/

相关文章:

javascript - Canvas - 贝塞尔曲线重复

javascript - 检查 li 列表中的每个类并删除所有其他类

javascript - 使用数组辅助函数具有唯一值的数组

python - 功能问题

c++ - 使用 C++ 循环从加载的 TXT 文件执行计算时遇到问题

string - 如何在 mips 程序集中迭代字符串

javascript - 如何将多个对象值作为单个对象发送到 JavaScript 函数

javascript - 使用表单中的 session 值进行输入

arrays - Haskell 中不断增长的数组

javascript - Cypress> 在对象数组中查找文本> 无法定位文本 :TypeError: $e1. find.contains 不是函数