【Javascript】 Array.sort() はデフォルトでは要素を文字列としてソートする
最大値がほしくて、このようなことをしてみたら、9が返ってきました。
(並べ替えて、ひっくり返して、最初の要素→最大値)
var a = new Array(9,5,1,10) a.sort().reverse()[0]
なぜ10ではなくて、9が返ってきたか。
ここでピンときた人はするどいか、デバッグ慣れしてる人かも。
おそらく辞書順ですね。文字列としてソートされている。
デフォルトで文字列としてソートされるのは、確かにそのとおりらしい。
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Array/sort
こうすれば、ちゃんと数値としてソートしてくれます。
a.sort(function(a, b) {return a - b})
コメント