javascript オブジェクトを比較する

javascript オブジェクトを比較する

javascriptで、JSON.stringifyを使用して、オブジェクトを比較するサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 102.0.5005.115

オブジェクトを比較

「JSON.stringify」を使えば、オブジェクトを比較することが可能です。

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

console.log(JSON.stringify(obj1) == JSON.stringify(obj2)); // true

ただし、並びが違うと「false」となってしまいます。

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

console.log(JSON.stringify(obj1) == JSON.stringify(obj2)); // false

その場合は、「ソート」してから比較することで「true」になります。

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

function objSort(obj) {
  // ソート後のオブジェクト
  let objsort = {};

  // キーをソート
  let keys = Object.keys(obj).sort();
  // ソートしたオブジェクトを新しく作成
  keys.forEach(key => objsort[key] = obj[key]);

  return objsort;
}

// true
console.log(JSON.stringify(objSort(obj1)) == JSON.stringify(objSort(obj2)));