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)
你必须在内部循环中使用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()回调中使用的结果.