配列の要素が同じかどうか比較する方法です。
配列をそのまま「==」などで比較すると、参照の比較となるためうまく比較できません。
なので、toStringで文字列にした値を比較するとうまく比較できます。
配列の比較
例)ダメなパターン
1 2 3 4 5 6 7 |
//配列 var arr1 = [10, 20, 30]; var arr2 = [10, 20, 30]; //比較 var result = (arr1 == arr2); →falseとなる |
例)OKなパターン
1 2 3 4 5 6 7 |
//配列 var arr1 = [10, 20, 30]; var arr2 = [10, 20, 30]; //比較 var result = (arr1.toString() == arr2.toString()); →trueとなる |
連想配列の場合はtoStringを行うと、常に [object Object] という値が返るのでこの方法では比較できません。その場合は以下「オブジェクトの配列の比較」をご覧ください。
オブジェクトの配列の比較
オブジェクトの配列を比較したい場合は、JSON文字列に変換して比較できます。
例)オブジェクトの配列を比較する
1 2 3 4 5 6 7 8 9 |
//オブジェクトの配列 var arr1 = [{k1:'foo',k2:'bar'},{k1:'hoge',k2:'hege'}]; var arr2 = [{k1:'foo',k2:'bar'},{k1:'hoge',k2:'hege'}]; //JSONに変換して比較する var x = JSON.stringify(arr1) == JSON.stringify(arr2); //結果表示 console.log(x); |
- (結果)
- true
オブジェクトに定義してあるキーと値は同じでも、順番が異なると違うものと判定されるためご注意ください。