Сохраняйте точность во время числовой сортировки - PullRequest
1 голос
/ 26 октября 2011

Я использую эту функцию для сортировки массива чисел, некоторые из которых являются десятичными.Но я теряю .0 на этих значениях.Я хотел бы сохранить эту точность, когда она указана, но не добавлять ее, когда это не так.

Например: [1.5, 2, 0.75, 1.0, 0.75] следует отсортировать по [2, 1.5, 1.0, 0.75], но с помощью функции ниже сортирует по [2, 1.5, 1, 0.75]

var sortNums = function( arr ) {
        // Quit if arr is not an array.
        if ( !$.isArray(arr) ) { return false; }

        // Sort highest to lowest:
        arr.sort(function(a,b) {return (b-a);}); 

        // Remove non-numeric vals and return:
        return $.map(arr, function(v) {if (typeof v === 'number') {return v;}}); 
};

Ответы [ 2 ]

4 голосов
/ 26 октября 2011

JavaScript удаляет хвостовые десятичные нули.

var x = 1.0;
x; // 1

Если вы хотите сохранить десятичные дроби, вам нужно привести их как строки. И затем вы можете при необходимости привести их к числу в процессе сортировки.

1 голос
/ 26 октября 2011

По сути, они не имеют никакой точности.Но sort уже работает должным образом и с бесконечно полезными автоматическими преобразованиями JavaScript, - сделает работу за вас.Смотри: http://jsfiddle.net/hqc33/

...