Pol*_*ina 1 javascript arrays loops ecmascript-6
我正在尝试在数组内的对象内循环数组内的对象,我真的很困惑!
这是我的arr:
var arr = [
{
title: "Harry Potter",
categories: [
{
id: 39,
name: "Popular Books"
},
{
id: 3,
name: "Kids"
},
{
id: 79,
name: "All Books"
}
]
},
{
title: "Pride and Prejudice",
categories: [
{
id: 36,
name: "Classic Books"
},
{
id: 3,
name: "Woman"
},
{
id: 79,
name: "All Books"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
如何获取只有类别名称“儿童”的图书的标题?
现在我能想到的只有:
var find = function(arr){
for(var i=0; i<arr.length; i++){
for(var j=0; j<arr[i].categories; j++){
console.log(arr[i].categories[j].name)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是超级脏而且无论如何也不起作用。谢谢你!
您可以使用 filter过滤掉那些类别与“Kids”匹配的数组元素,然后将它们的标题映射到新数组中。
arr.filter( i => i.categories.some(j => j.name ==="Kids") ).map(k => k.title )
Run Code Online (Sandbox Code Playgroud)
arr.filter( i => i.categories.some(j => j.name ==="Kids") ).map(k => k.title )
Run Code Online (Sandbox Code Playgroud)