Nib*_*bor 7 javascript arrays filter ecmascript-6
我有一个数组,看起来像这样:
const persons = [
{
name: "Joe",
animals: [
{species: "dog", name: "Bolt"},
{species: "cat", name: "Billy"},
]
},
{
name: "Bob",
animals: [
{species: "dog", name: "Snoopy"}
]
}
];
Run Code Online (Sandbox Code Playgroud)
现在我想根据物种进行过滤.例如:每个有猫的人都应该退回:
const result = [
{
name: "Joe",
animals: [
{species: "dog", name: "Bolt"},
{species: "cat", name: "Billy"},
]
}
];
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的filter()方法:
const result = persons.filter(p => p.animals.filter(s => s.species === 'cat'))
Run Code Online (Sandbox Code Playgroud)
但这不会返回所需的结果(它会返回两个人).
如何在嵌套数组的属性上过滤数组?
ver*_*tti 11
您的内部过滤器仍然为狗人返回"truthy"值(空数组).添加,.length以便没有结果0("假")
const result = persons.filter(p => p.animals.filter(s => s.species === 'cat').length)
编辑:每评论和其他几个答案,因为我们的目标是获得从内环路truthy值,.some会得到更好的完成工作,因为它直接有任何项目的比赛返回true.
const result = persons.filter(p => p.animals.some(s => s.species === 'cat'))
| 归档时间: |
|
| 查看次数: |
2714 次 |
| 最近记录: |