2017-07-26 11 views

答えて

2

Array#sortソートがアルファベット順なので、そう'11''2'の前に来ます。

sort()方法は、配列in placeの要素をソートし、配列を返します。並べ替えは必ずしもstableではありません。デフォルトのソート順は、文字列のUnicodeコードポイントに従います。

この問題を解決するには、デフォルトのソート順は関係なく、あなたの入力が何であるか、文字列のUnicodeコードポイントに応じていないためだ

array.sort(function (a, b) { 
    return a - b; 
}); 
+0

Oy。どうやらこれは[それがどう正しく行われたか](https://stackoverflow.com/a/21595293/403455)です。 –

1

のようなコールバックと数値の並べ替えを、使用することができます。 Numberは暗黙的に文字列に変換されてからソートされます。

-1

sort()メソッドは、配列の項目をソートします。

ソート順は、英字または数字、昇順(上)または降順(下)のいずれかです。

デフォルトでは、sort()メソッドは、各要素のUnicodeポイント値に対して、値をアルファベット順および昇順で文字列としてソートします。

var fruit = ['cherries', 'apples', 'bananas']; 
fruit.sort(); // ['apples', 'bananas', 'cherries'] 

var scores = [1, 10, 21, 2]; 
scores.sort(); // [1, 10, 2, 21] 
// Note that 10 comes before 2, 
// because '10' comes before '2' in Unicode code point order. 

var things = ['word', 'Word', '1 Word', '2 Words']; 
things.sort(); // ['1 Word', '2 Words', 'Word', 'word'] 
// In Unicode, numbers come before upper case letters, 
// which come before lower case letters. 
+0

注文は「デフォルト」または「あなたのソート機能でプログラムするもの」のいずれかにすることができます。 "数値"または "昇順/降順"の特別な設定はありません。 –

0

そのはあなたが彼らのUnicode表現に基づいて比較してみますArray#sortを渡すどんな数値配列を渡すことができないではないこと:

は、この例を見てください。代わりにコンパレータを渡し、ソート中の比較方法を比較してください。

y.sort((a,b)=>a-b) 
関連する問題