Javascript 在对象数组中查找整个对象

Javascript 在对象数组中查找整个对象,javascript,jquery,arrays,Javascript,Jquery,Arrays,如何在Array1中找到Array2。我一直在使用$.inArray()方法或indexOf()但它返回false,但语句为true var array1 = [{ h: 1480508328, rid: 16, sid: 2 }, { h: 87542, rid: 18, sid: 9 } ]; var array2 = { h: 1480508328, rid: 16, sid: 2 }; //test if array2

如何在Array1中找到Array2。我一直在使用$.inArray()方法或indexOf()但它返回false,但语句为true

var array1 = [{
    h: 1480508328,
    rid: 16,
    sid: 2
  }, {
    h: 87542,
    rid: 18,
    sid: 9
  }
];
var array2 = {
  h: 1480508328,
  rid: 16,
  sid: 2
};
//test if array2 exist in array1
if ($.inArray(array2, array1) > 0) {
  console.log('Object is in array');
} else {
  console.log('Object is not in array');
}

请帮忙。谢谢你

你可以把它串起来,检查是否平等

var array1 = [{
    h: 1480508328,
    rid: 16,
    sid: 2
  }, {
    h: 87542,
    rid: 18,
    sid: 9
  }
];
var array2 = {
  h: 1480508328,
  rid: 16,
  sid: 2
};

var dat1 = JSON.stringify(array2);
array1.forEach(function(item){
    if(JSON.stringify(item) === dat1){
        console.log(dat1)
    } else {
        console.log('Not match')
    }
});

使用
Array.prototype.each
检查数组和对象的每个对象属性是否匹配-现在使用
Array.prototype.some
检查数组中是否至少存在一次对象

请参见下面的演示:

vararray1=[{h:1480508328,rid:16,sid:2},{h:87542,rid:18,sid:9}];
var对象={h:1480508328,rid:16,sid:2}
var结果=阵列1.一些(函数(e){
返回Object.keys(Object).length==Object.keys(e).length&&Object.keys(e).every(函数k){
返回对象中的k&&e[k]==对象[k];
});
});

控制台日志(结果)您可以迭代数组,用给定对象的长度检查属性的长度,并检查每个值

var数组=[{h:1480508328,rid:16,sid:2},{h:87542,rid:18,sid:9}],
对象={h:1480508328,rid:16,sid:2},
found=array.some(函数(a){
var keys=对象。keys(a);
return keys.length==Object.keys(Object.length&&keys.every(函数k){
返回一个[k]==对象[k];
});
});

console.log(找到)仅供参考,
array2
不是数组。它是一个物体
array2
也不在
array1
中,只是一个看起来像
array2
的对象。因此,您必须检查是否有任何项匹配
array2
。。。。不是吗?嗯。。。。否:“JavaScript不支持带有命名索引的数组。在JavaScript中,数组总是使用编号索引。”*@jamesOduro,你可以这么说,但我们在JS中不称它们为关联数组,因为没有顺序保证。它们被称为对象。Javascript很奇怪,注意:如果对象的属性排序不同,可能会有问题。出于某种原因,为了帮助我的项目,我选择你的作为答案非常感谢。对象属性是什么…你是说“键”?
对象与你的
数组2
相同@james Oduro对象有属性,数组有键这也是属性,因为数组是JS中的对象。然而,数组也可能具有非键的属性。我认为你的答案是最好的解决方案yuvi提供的答案有一个大问题如果排序不一样。。可以在位置1而不是位置0找到元素,因此如何返回找到的项目的位置?@jamesOduro,这无关紧要,因为数组的所有元素都已检查。请参见使用反向项编辑。