Javascript JQuery不能正常工作吗?

Javascript JQuery不能正常工作吗?,javascript,jquery,arrays,arraylist,Javascript,Jquery,Arrays,Arraylist,需要查找数组中是否存在数组对象。我有一个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:-

需要查找数组中是否存在数组对象。我有一个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(如果未找到):


为什么两个查询都返回未找到的结果?我应该怎么做才能得到正确的结果呢?

在JavaScript中,给Object赋值的变量类似于C中的指针;变量是对对象的内存位置的引用,而不是对象及其内容本身

var x = {};
var y = {};
x === y;
// false
您可以在
array.some()
中更新回调以检查深度相等,而不是比较对象引用的相等性,但这样做可能会很麻烦

比较对象中已知唯一的键可能更好,例如
“item\u id”


arrObj
与列表中的任何对象完全不同
inArray
,除非您给它一个客户匹配器,否则它将匹配对象,如果它不是基本类型(字符串、数字等)。由于它们是不同的对象,因此它们不相同,并且数组中不存在。此外,如果没有关于“相等”在本例中的含义的进一步信息,则很难编写匹配器,因为item_字段、item_id和item_父项都是相同的different@Gokul,同样在您的示例中
array.some(函数(元素){return element.item_fields.text==arrObj.item_fields.text})
这将返回
true
var x = {};
var y = {};
x === y;
// false
array.some(function(element) {
  return element.item_id === arrObj.item_id;
});