Javascript 如何检测对象数组是否包含特定对象?

Javascript 如何检测对象数组是否包含特定对象?,javascript,arrays,json,object,Javascript,Arrays,Json,Object,假设我有一个对象数组arr=[]。 在arr内部有许多对象,比如说格式都相同 arr = [ { "a": "asdf", "b": { "a": 2, "b": 1, "c": 4 }, "c": { "a": 0, "b": 1 } }, { "a": "xswh", "b": { "a": 4, "b": null, "c":

假设我有一个对象数组
arr=[]
。 在
arr
内部有许多对象,比如说格式都相同

arr = [
  {
    "a": "asdf",
    "b": {
      "a": 2,
      "b": 1,
      "c": 4
    },
    "c": {
      "a": 0,
      "b": 1
    }
  },
  {
    "a": "xswh",
    "b": {
      "a": 4,
      "b": null,
      "c": 8
    },
    "c": {
      "a": 6,
      "b": 5
    }
  }
]
如果有一个变量是形状相同的对象:

obj1 = {
    "a": "asdf",
    "b": {
      "a": 2,
      "b": 1,
      "c": 4
    },
    "c": {
      "a": 0,
      "b": 1
    }
  }
如何快速检查此对象
obj1
是否在阵列中?(也就是说,如果数组中有一个参数和值完全相同的对象


我尝试了
arr.includes(obj1)
,但似乎不起作用。

您可以使用
findIndex
功能执行以下操作:

arr.findIndex(item => JSON.stringify(item) === JSON.stringify(obj1));
使用-

您可以在集合(数组)上使用
find
,使用
isEqual
查找特定对象值的匹配项,这将为您执行深度比较(在本例中为对象属性)。

查找
-

isEqual
-

我将相同的顺序,字符串化并检查该字符串。您可以使用注意:只有当属性的顺序相同时,它才起作用
_.find(arr, (v) => { 
   return _.isEqual(v, obj1);
});