SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【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})

関連するメモ

コメント