每个键和值的Javascript对象比较

时间:2016-10-10 06:00:24

标签: javascript-objects

var obj1 = {a:1, b:2, c:3};
var obj2 = {a:3, b:2, c:1};

如何使用javascript(for循环)比较对象是否相等。

我尝试通过stringify进行转换来比较这两个对象,但是如果键错位或者顺序不正确,则比较失败。

1 个答案:

答案 0 :(得分:0)

像这样去

Object.defineProperty(Object.prototype,"equals", {
    value: function (array) {
        for ( key in this )
            if ( ! ( array[key] === this[key] ) )
                return false;
        for ( key in array )
            if ( ! ( array[key] === this[key] ) )
               return false;
       return true;
    }
});

将为所有对象添加equals - 方法。您可以像这样使用它:

[0,1,2].equals([0,1,2]);       // true
[0,1,2].equals([0,1,3]);       // false
[0,1,2].equals([0,1,2,3]);     // false
obj1.equals(obj2);             // true

请注意,在比较“深度”时,此功能无法进行比较。