比较数组中的对象

时间:2014-10-16 07:58:24

标签: jquery javascript

我有一组对象。

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

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

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

但是,如果一个人允许说出4个对象,那么他们都必须具有相同的密钥。

2 个答案:

答案 0 :(得分:7)

您可以使用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,它有一个不错的polyfill on the mdn page

如果你真的想使用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

答案 1 :(得分:-3)

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.
        }
    }
}