[英]Javascript - get object from an array, whose array matches another array
I have an array of objects ( zoo
) inside of which are some objects, and the objects have an array of objects ( animals
) in them.我有一个对象数组(
zoo
),其中有一些对象,并且这些对象中有一个对象数组( animals
)。 I need to filter the array, and get the objects with the same animal names, as another dynamic array in my code.我需要过滤数组,并获取具有相同动物名称的对象,作为我代码中的另一个动态数组。
zoo
0:[...]
1:[...]
2:
name:"whatevername"
city:"whatevercity"
animals:Array(2)
0:
name:"somename"
species:"somespecies"
1: ...
etc:"whasover"
So if my dynamic array contains somename
in it, I should get the object with index 2. How do I go about something like that?因此,如果我的动态数组中包含
somename
,我应该得到索引为 2 的 object。我该如何做 go 呢?
This is the function you need:这是您需要的 function:
const search = keyword => zoos.find(({ animals }) => animals.some(({ name }) => name == keyword));
Here's a live example:这是一个活生生的例子:
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' } ] }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.