JavaScript JSON オブジェクトを比較する方法
要素の順番が保証されている場合
JSON.stringifyを使う。
キー、値がすべて一致する場合
var a = {"WL_Lv1":-1, "WL_Lv2":-1, "WL_Lv3":-1, "WL_Lv4":-1};
var b = {"WL_Lv1":-1, "WL_Lv2":-1, "WL_Lv3":-1, "WL_Lv4":-1};
if(JSON.stringify(a) === JSON.stringify(b)){
console.log(1);
}
console.log(2);
出力結果
1
2
キーは一致するが値が一致しない場合
var a = {"WL_Lv1":0, "WL_Lv2":-1, "WL_Lv3":-1, "WL_Lv4":-1};
var b = {"WL_Lv1":-1, "WL_Lv2":-1, "WL_Lv3":-1, "WL_Lv4":-1};
if(JSON.stringify(a) === JSON.stringify(b)){
console.log(1);
}
console.log(2);
出力結果
2
要素の順番が保証されていない場合
簡単な方法はない。
- Lodashの
_.isEqual()
- Node.jsの
assert.deepEqual()
- deep-equal
- Object.entriesで配列化し、ソートを行った上でJSON.stringifyを使う
参考
オブジェクトの比較に JSON.stringify() を使ってはいけない —— プロパティには順序が無い - Qiita