Javascript の Array#sort はデフォルトで要素を文字列としてソートする

Array#sort はデフォルトで要素を文字列としてソートするようだ。

Core JavaScript 1.5 Reference:Global Objects:Array:sort

それを知らずにはまった。要素を数値として比較したい場合は比較関数を引数に指定する。

[1,8,11].sort();
// => [1,11,8]
[1,8,11].sort(function(a, b) { return a - b; });
// => [1,8,11]

Array#sort は用法を守ってきちんと使いましょう。