首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查对象数组是否包含JS中的对象

问检查对象数组是否包含JS中的对象
EN

Stack Overflow用户
提问于 2016-06-08 17:58:28
回答 1查看 671关注 0票数 0

我试图编写一个函数,这样可以很容易地知道一个特定的对象键/值是否包含在另一个带有对象的数组中。

我试过了indexOf,但这似乎不起作用。示例:

代码语言:javascript
复制
if(data2.indexOf(data1) > 0){
    console.log("Found!");
    return true;
  }else{
    return false;
  }

这是一个对象:

代码语言:javascript
复制
  {
    "movie": {
      "ids": {
        "imdb": "tt2975590"
      }
    }
  }

我需要一个函数,它可以告诉我它是否已经在另一个数组中,比如这个:

代码语言:javascript
复制
[
  {
    "id": 2008588422,
    "type": "movie",
    "movie": {
      "title": "Batman v Superman: Dawn of Justice",
      "year": 2016,
      "ids": {
        "trakt": 129583,
        "slug": "batman-v-superman-dawn-of-justice-2016",
        "imdb": "tt2975590",
        "tmdb": 209112
      }
    }
  },
  {
    "id": 1995814508,
    "type": "movie",
    "movie": {
      "title": "Dirty Grandpa",
      "year": 2016,
      "ids": {
        "trakt": 188691,
        "slug": "dirty-grandpa-2016",
        "imdb": "tt1860213",
        "tmdb": 291870
      }
    }
  }
]

在这种情况下,它将是并返回true。(电影“蝙蝠侠大战超人”也有同样的imdb id)。

有什么帮助吗?谢谢!:D

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 18:04:23

为了澄清你得到了一个array that contains objects。您应该看看Array.prototype.some,它将在数组上迭代,如果从回调内部返回true,则返回true。

代码语言:javascript
复制
var search = {
  "movie": {
    "ids": {
      "imdb": "tt2975590"
    }
  }
};

var found = arr.some(function(obj) {
  return obj.movie.ids.imdb == search.movie.ids.imdb;
});

其中arr是电影的数组。

您可以使用dot notation and bracket notation访问对象中的属性,例如:search.movie和search['movie']将返回:

代码语言:javascript
复制
{
  "ids": {
    "imdb": "tt2975590"
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37709660

复制
相关文章

相似问题

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