我有一个对象数组(zoo
),其中有一些对象,而这些对象中也包含对象数组(animals
)。我需要过滤数组,并使用与我代码中的另一个动态数组相同的动物名称来获取对象。
zoo
0:[...]
1:[...]
2:
name:"whatevername"
city:"whatevercity"
animals:Array(2)
0:
name:"somename"
species:"somespecies"
1: ...
etc:"whasover"
因此,如果我的动态数组中包含somename
,则应该获得索引为2的对象。我该如何处理?
答案 0 :(得分:0)
这是您需要的功能:
const search = keyword => zoos.find(({ animals }) => animals.some(({ name }) => name == keyword));
这是一个实时示例:
const zoos = [
{
name: 'Antarctic Zoo',
city: 'Chilean Villa Las Estrellas',
animals: [{ name: 'Chinstrap penguin', species: 'Pygoscelis antarctica' }],
},
{
name: 'African Zoo',
city: 'Cairo',
animals: [{ name: 'Lion', species: 'Panthera leo' }],
}
];
const search = keyword => zoos.find(({ animals }) => animals.some(({ name }) => name == keyword));
const result = search('Lion');
console.log(result); // { name: 'African Zoo', city: 'Cairo', animals: [ { name: 'Lion', species: 'Panthera leo' } ] }