数値形式の比較
数値形式の文字列を比較する場合、それは整数として比較されます。by PHP Manual
PHPのsort関数は相当おかしいを見てjavascriptだとどうなんだろうと試してみた。
String型
javascript: (function(){var s=["100", "0x64", "1e2", ".1E3"];for(var i=0,l=s.length;i<l;i++){alert("100" == s[i]);}})()
["100", "0x64", "1e2", ".1E3"].forEach(function(n){ console.log("100" == n) });
結果は、true, false, false, falseで期待通り。さすが!
Number型
javascript: (function(){var s=[100, 0x64, 1e2, .1E3];for(var i=0,l=s.length;i<l;i++){alert(100 == s[i]);}})()
[100, 0x64, 1e2, .1E3].forEach(function(n){ console.log(100 == n) });
結果は、全部trueでした。
===(厳密比較)で見てもtrue。これは、型一緒だから当然か。
となると、10進数に限定したい場合は、こうか?
[100, 0x64, 1e2, .1E3].forEach(function(n){ console.log(/^[0-9]+$/.test(n) && 100 == n) });
全部trueでした。
[100, 0x64, 1e2, .1E3].forEach(function(n){ console.log(n.toString()) });
全部100でした。
数値は、受け取ったら直ぐに10進数に変換して処理してるのかな?
そもそも、数値を10進数以外で出力する方法あったっけ?