[JS]二つのArrayの中身が同一か判定する簡単な方法

二つのArrayの中身が同一か判定する方法を書いておきます。Array#everyArray#includesの組み合わせなどを使う方法もありますが、複雑だったり、古いブラウザでは使えなかったりするので、俺の知っている簡単な方法を紹介します。

方法

JSON.stringifyを使う。

let a = [1, 2, 3, {a: 1}];
let b = [3, 2, 1, {a: 1}];
JSON.stringify(a.concat().sort()) === JSON.stringify(b.concat().sort()) // true

注意

この方法ではnullundefinedが同じものとして判定されます。JSON#stringifyundefinednullに変換するためです。

JSON.stringify([null].concat().sort()) === JSON.stringify([undefined].concat().sort())
// true