重複の可能性:
ソートが整数で機能しない?
javascriptの並べ替えメソッドで数値を並べ替える方法
Array.sort()が数値を正しく並べ替えない
コード:
var x = [40,100,1,5,25,10];
x.sort();
出力:
1,10,100,25,40,5
私の期待する出力:
1,5,10,25,40,100
重複の可能性:
ソートが整数で機能しない?
javascriptの並べ替えメソッドで数値を並べ替える方法
Array.sort()が数値を正しく並べ替えない
コード:
var x = [40,100,1,5,25,10];
x.sort();
出力:
1,10,100,25,40,5
私の期待する出力:
1,5,10,25,40,100
JavaScript配列.sort()
関数は、デフォルトで、比較を行う前に配列要素を文字列に変換します。
あなたはそれを上書きすることができます:
x.sort(function(e1, e2) { return e1 - e2; });
(渡される関数は、最初の要素が2番目の要素よりも小さいか、等しいか、または大きいかに応じて、負、ゼロ、または正の数値を返す必要があります。)
私はこの言語の奇妙な側面の論理的根拠を見たことがありません。
MDNArray.sortによると
compareFunctionが指定されていない場合、要素は文字列に変換し、辞書式(「辞書」または「電話帳」、数値ではない)の順序で文字列を比較することによってソートされます。たとえば、「80」は辞書式順序では「9」の前にありますが、数値ソートでは9は80の前にあります。
したがって、次のようなことを行う必要があります。
function compareNumbers(a, b)
{
return a - b;
}
var x = [40,100,1,5,25,10];
x.sort(compareNumbers);
var x = [40,100,1,5,25,10];
x.sort(function(a,b){return a-b});
デフォルトではアルファベット順の昇順ソート (1 文字がソートされます。
詳細については、http ://www.w3schools.com/jsref/jsref_sort.asp を参照してください。