首页 > 解决方案 > Javascript - 从数组中获取对象,该数组与另一个数组匹配

问题描述

我有一个对象数组(zoo),其中有一些对象,并且这些对象中有一个对象数组(animals)。我需要过滤数组,并获取具有相同动物名称的对象,作为我代码中的另一个动态数组。

zoo

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

因此,如果我的动态数组包含somename在其中,我应该得到索引为 2 的对象。我该怎么做呢?

标签: javascript

解决方案


这是您需要的功能:

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


推荐阅读