2013-06-06 18 views
6

はJavaScriptがクロームコンソール上で、私は非常にunintutiveあるこのJavascript配列はどのように比較されますか?

[10,0,0] > [1,0,0] 
true 
[10,0,0] > [5,0,0] 
false 
[5, 0, 0, 0] < [10, 0, 0, 0] //repeatable 
false 

[10,0,0,0] > [9,0,0,0] 
false 
[11,0,0,0] > [10,0,0,0] 
true 

を取得し、比較されるだろう、と私も適用されているものの論理の意味をすることはできませんどのように標準が定義されている、と彼らはそう繰り返し可能に見えますオブジェクトID(ref)などに基づいていないので、そのためのドキュメントはありますか?あなたを助けるかもしれない。このような

+1

まあ、多分ECMAScriptの仕様は助けになるでしょう:http://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 – Stasik

+4

文字列の比較。 – NINCOMPOOP

+0

暗黙的にtoStringを呼び出し、アルファベット順に比較していますか? –

答えて

4

JavaScript配列は文字列に変換され、次に文字列が比較されます。そう。

[10,0,0].toString() => "10,0,0" 
[5,0,0].toString() => "5,0,0" 

文字列は辞書順に比較されるため、 "5,0,0"は "10,0,0"よりも大きい文字列です。

1

何か、

JSON.stringify([2,2,2]) === JSON.stringify([2,2,2]); //true 

乾杯:)。

+0

なぜこれが彼を助けますか? –

+0

これにより、2つの配列をStringとして直接比較できます。 –

関連する問題