首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在对象数组中搜索对象

在对象数组中搜索对象
EN

Stack Overflow用户
提问于 2019-05-02 07:43:35
回答 3查看 59关注 0票数 0

我有以下数组:

代码语言:javascript
复制
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,the:'Justice‘}传递到数组中以查找匹配的对象。

例如:

代码语言:javascript
复制
findOne(HEROES, { id: 5, squad: 'Justice League' }) 

应该返回

代码语言:javascript
复制
{ id: 5, name: 'Wonder Woman', squad: 'Justice League' }

我不知道如何开始,任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2019-05-02 07:53:56

使用find

代码语言:javascript
复制
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" }));

票数 3
EN

Stack Overflow用户

发布于 2019-05-02 07:49:08

看看下划线JS或Lodash这样的实用程序库。他们就有这样的功能。

来自lodash文档:

代码语言:javascript
复制
var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];

_.find(users, function(o) { return o.age < 40; });
// => object for 'barney'

// The `_.matches` iteratee shorthand.
_.find(users, { 'age': 1, 'active': true });
// => object for 'pebbles'
票数 0
EN

Stack Overflow用户

发布于 2019-05-02 08:05:29

使用find的相似代码

代码语言:javascript
复制
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,obj)=>arr.find(x=>x.id==obj.id&&x.squad==obj.squad);

console.log(findOne(HEROES, { id: 7, squad: 'Avengers' }));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55943996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档