需要查找数组中是否存在数组对象。我有一个arrayObject和数组集合。
我的代码:
var array = [
{
id:0,
item_fields:{text: "stack", type: "2", options: null},
item_id:"540551c1-1744-4f09-920f-75350ba23cb6",
item_parent:"e50b00d5-8c3e-449e-92ba-41ff9d46babe",
sequence:-1
},
{
id:0,
item_field_type:"multiChoiceNumeric",
item_fields:{text: "overflow", type: "RangeNumeric", options: null},
item_id:"1bacc69f-d8c9-4107-af60-295f8994d249",
item_parent:"e50b00d5-8c3e-449e-92ba-41ff9d46babe",
sequence:-1
}];
var arrObj =
{
id:0,
item_field_type:"multiChoiceNumeric",
item_fields:{text: "stack", type: "2", options: null},
item_id:"540551c1",
item_parent:"e50b00d5",
sequence:-1
}
此查询返回false:
array.some(function(element){return element == arrObj})
此查询返回-1(如果找不到):
jQuery.inArray(arrObj,array)
为什么两个查询都返回未找到的结果?我应该怎么做才能得到正确的结果?
答案 0 :(得分:1)
在JavaScript中,对Object的变量赋值类似于C中的指针;该变量是对对象的内存位置的引用,而不是对象及其内容本身的引用。
var x = {};
var y = {};
x === y;
// false
您可以更新array.some()
中的回调以检查深度相等性,而不是比较对象引用的相等性,但这会很麻烦。
最好在您知道唯一的对象(例如"item_id"
)中比较一个键:
array.some(function(element) {
return element.item_id === arrObj.item_id;
});