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);
});