如何根据其中一个嵌套数组的值过滤数组?

ver*_*ism 2 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 }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

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

例如,如果我想过滤'category-c',则只返回第2和第3个值(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;
        })
    })
}
Run Code Online (Sandbox Code Playgroud)

cнŝ*_*ŝdk 5

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

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

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