在数组内循环对象在数组内对象内JavaScript

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)

这是超级脏而且无论如何也不起作用。谢谢你!

dev*_*080 5

您可以使用 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)