I have an array, which looks like this:
const persons = [
{
name: "Joe",
animals: [
{species: "dog", name: "Bolt"},
{species: "cat", name: "Billy"},
]
},
{
name: "Bob",
animals: [
{species: "dog", name: "Snoopy"}
]
}
];
Now I want to filter based on the species.
For example: every person which has a cat, should be returned:
const result = [
{
name: "Joe",
animals: [
{species: "dog", name: "Bolt"},
{species: "cat", name: "Billy"},
]
}
];
I have tried with the the filter()
method like this:
const result = persons.filter(p => p.animals.filter(s => s.species === 'cat'))
But this doesn't return the desired result (it returns both persons).
How can I filter the array bases on an attribute of a nested array?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…