2014-11-26 6 views
-1
arr=[-37.507,-3.263,40.079,27.999,65.213,-55.552]; 
arr.sort(); 

и результатСортировка массива в JavaScript

arr=[-3.263,-37.507,-55.552,27.999,40.079,65.213] 

Может ли один помочь мне, что логика, которая «своего рода()» функция делает? Пожалуйста, объясните мне, почему «arr.sort();» дает приведенный выше результат. И другие вопросы не имеют точного ответа, который объясняет, что я получаю здесь.

+1

Вы можете посмотреть здесь http://stackoverflow.com/questions/234683/javascript-array-sort-implementation –

+0

@RajKumar Спасибо, но с помощью этой функции я не смог получить правильный отсортированный массив, U мог видеть это в моем вопросе. Пожалуйста, объясните это. –

+0

re: «другие вопросы не имеют точного ответа»; да, да. В [принятом ответе] (http://stackoverflow.com/a/1063027/660921) по этому вопросу говорится: «По умолчанию метод сортировки сортирует элементы по алфавиту»; это именно то, что у вас есть, и описание в точности совпадает с ответом, который вы приняли по этому вопросу. – Carpetsmoker

ответ

3

array.sort сортирует строки, если вы хотите отсортировать численно, необходимо сравнительную-функцию:

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

Спасибо @MBaas, Но вы можете видеть, что результат неправильный, что в моем вопросе вы могли бы объяснить это, пожалуйста? –

+0

Результаты правильные, см. здесь: http://jsfiddle.net/evpt2wfr/ – MBaas

0

Функция сортировки по умолчанию рассматривает каждый элемент в виде строки. Лексикографический порядок не совпадает с порядковым номером. Для численного сортировки, сделайте следующее:

arr.sort(function (a, b) { return a - b }); 

Аргумент sort() это функция, которая возвращает отрицательное число, если только a приходит до того b.

0

использовать это:

arr.sort(function(a, b) { 
    if (a>b) return 1; 
    if (a<b) return -1; 
    if (a==b) return 0; 
}); 
Смежные вопросы