QA@IT

JavaScriptで2つの配列の要素が同じかどうか比較するには?

7357 PV

Arrayのオブジェクト同士を比較すると、

> a = new Array(1, 2, 3);
[ 1, 2, 3 ]
> b = new Array(1, 2, 3);
[ 1, 2, 3 ]
> a == b
false
> a === b
false

と要素が同じでも false になってしまいます。この理由は何でしょうか? オブジェクトの参照が一致しない限り false ?

手動でイテレートするのが面倒だったのと、ディープな比較が不要だったので、取り敢えず以下のように書きました。

JSON.stringify(arr) === '[1,2,3]'

順序も同じ、順不同で良いなど、等価性の評価は自明ではないのかもしれませんが、こういう場合はどうやって比較するのが一般的なのでしょうか?

回答

面倒くさければJSON.stringifyでの比較で十分ですよ
これで問題になることは殆どないです

しかし、最近のエンジンではforで回した方が早いです

編集 履歴 (0)
  • これでいいんですね。ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。