比较数组中的对象

我有一个对象数组。

var array = [obj1, obj2, obj3, objN] 

每个对象都有3个属性键,名称,描述。

如何比较这些对象是否相等,如果它们具有相同的键,则两个对象相等。

但如果一个人可以说4个对象,那么他们都必须拥有相同的密钥。

你可以使用Array.prototype.every()来做到这一点:

every()方法测试数组中的所有元素是否都通过了由提供的函数实现的测试。 (MDN)

例:

 var array = [obj1, obj2, obj3, objN]; var allTheSame = array.every(function(element){ return element.key === array[0].key; }); 

请注意, Array.prototype.every()是IE 9+。 但是,对于早期版本的IE ,mdn页面上有一个很好的polyfill 。

如果你真的想使用for循环,你可以这样做:

 var array = [obj1, obj2, obj3, objN]; var allTheSame = array.length == 1; for(var i = 1; i < array.length && (array.length > 1 && allTheSame); i++){ allTheSame = array[0].key == array[i].key; } 

试试:

 [{key:1},{key:1},{key:1}]; // true [{key:1},{key:1},{key:2}]; // false [{key:1},{key:2},{key:1}]; // false [{key:1}]; // true 
 var array = [obj1, obj2, obj3, objN]; for(i = 0, i < array.length; i++){ for(j = i + 1; j < array.length; j++){ if(array[i].key == array[j].key){ // Your logic whatever you want to do here. } } }