Javascript-从数组中获取对象,该对象的数组与另一个数组匹配

时间:2020-07-19 20:34:03

标签: javascript

我有一个对象数组(zoo),其中有一些对象,而这些对象中也包含对象数组(animals)。我需要过滤数组,并使用与我代码中的另一个动态数组相同的动物名称来获取对象。

zoo

  0:[...]
  1:[...]
  2:
    name:"whatevername"
    city:"whatevercity"
    animals:Array(2)
        0:
          name:"somename"
          species:"somespecies"
        1: ...
    etc:"whasover"

因此,如果我的动态数组中包含somename,则应该获得索引为2的对象。我该如何处理?

1 个答案:

答案 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' } ] }