jsのsortは数値型の要素でもとにかく文字列で比較する。
( [ 1, 11, 3, 2 ] ).sort() [1, 11, 2, 3]
数値として比較するならこう。
(UFO演算子(「<=>」)がないので書きにくい。。。)
( [ 1, 11, 3, 2 ] ).sort( function( a, b ){ return ( a - 0 > b - 0 ) ? 1
: -1 } ) [1, 2, 3, 11]
文字型と数値型が混ざっている場合、ソートした上で元の型を保持する。
( [ 1, '11', '3', 2 ] ).sort( function( a, b ){ return ( a - 0 > b - 0 )
? 1 : -1 } ) [1, 2, "3", "11"]
コメントする