首页 > 解决方案 > 在对象数组中搜索对象

问题描述

我有以下数组:

const HEROES = [
{ id: 1, name: 'Captain America', squad: 'Avengers' },
{ id: 2, name: 'Iron Man', squad: 'Avengers' },
{ id: 3, name: 'Spiderman', squad: 'Avengers' },
{ id: 4, name: 'Superman', squad: 'Justice League' },
{ id: 5, name: 'Wonder Woman', squad: 'Justice League' },
{ id: 6, name: 'Aquaman', squad: 'Justice League' },
{ id: 7, name: 'Hulk', squad: 'Avengers' },
];

我正在尝试将另一个对象 { id: 5, square: 'Justice League' } 传递到数组中以找到匹配的对象。

例如:

findOne(HEROES, { id: 5, squad: 'Justice League' }) 

应该返回

{ id: 5, name: 'Wonder Woman', squad: 'Justice League' }

我不确定如何开始,任何帮助将不胜感激。

标签: javascriptarraysobjectecmascript-6

解决方案


使用find

const HEROES = [
{ id: 1, name: 'Captain America', squad: 'Avengers' },
{ id: 2, name: 'Iron Man', squad: 'Avengers' },
{ id: 3, name: 'Spiderman', squad: 'Avengers' },
{ id: 4, name: 'Superman', squad: 'Justice League' },
{ id: 5, name: 'Wonder Woman', squad: 'Justice League' },
{ id: 6, name: 'Aquaman', squad: 'Justice League' },
{ id: 7, name: 'Hulk', squad: 'Avengers' },
];

const findOne = (arr, query) => {
  const { id, squad } = query;
  return arr.find(({ id: a, squad: b }) => (id != undefined ? a == id : true) && (b != undefined ? b == squad : true));
};

console.log(findOne(HEROES, { id: 5, squad: "Justice League" }));


推荐阅读