可能性のある複製:
JavaScriptでのオブジェクト比較
2つのJSONオブジェクトを受け取り、2つを比較してデータが変更されたかどうかを確認する方法はありますか?
編集
コメントを確認した後、いくつかの明確化が必要です。
JSONオブジェクトは次のように定義されます
「名前/値のペアの順序なしセット。オブジェクトは{(左中括弧)で始まり、}(右中括弧)で終わります。各名前の後には:(コロン)があり、名前/値のペアは、(コンマ)で区切られます」 - json.org
私の目標は、簡単に言えば、2つのJSONオブジェクトリテラルを比較できるようにすることです。
私はjavascriptの第一人者ではないので、javascriptでこれらがオブジェクトリテラルである場合、それを私はそれらを呼び出すべきだと思います。
私が探しているのは、以下が可能な方法だと思います:
JSONを解析して2つのオブジェクトを比較するだけでは、まったく同じオブジェクト参照ではないため(同じ値になる可能性があるため)、十分ではありません。
ディープイコールを行う必要があります。
http://threebit.net/mail-archive/Rails-spinoffs/msg06156.html -jQueryを使用しているようです。
Object.extend(Object, {
deepEquals: function(o1, o2) {
var k1 = Object.keys(o1).sort();
var k2 = Object.keys(o2).sort();
if (k1.length != k2.length) return false;
return k1.Zip(k2, function(keyPair) {
if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){
return deepEquals(o1[keyPair[0]], o2[keyPair[1]])
} else {
return o1[keyPair[0]] == o2[keyPair[1]];
}
}).all();
}
});
Usage:
var anObj = JSON.parse(jsonString1);
var anotherObj= JSON.parse(jsonString2);
if (Object.deepEquals(anObj, anotherObj))
...