Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Сортировка числового массива .sort() [дубликат]

#javascript #native


        
             
                
                    
                        
                            This question already has an answer here:
                            
                        
                    
                
                        
                            Сортировка в JavaScript
                                
                                    (1 ответ)
                                
                        
                                Закрыт 1 год назад.
            
                    
Необходимо отсортировать массив на нативном JS. Код:



var inputStr = '235 1 0.9 -5 -98 25 -634.1';
var nArr;

function getConverArray(arr) {
	for (var i = 0; i < arr.length; i++) {
		arr[i] = +arr[i];
	}
	return arr;
}

nArr = getConverArray(inputStr.split(' '));

alert(nArr);
nArr.sort();
alert(nArr);




.sort() всё равно сортирует массив как символьный, хотя после функции getConverArray()
массив становится числовым. В чём проблема?
    


Ответы

Ответ 1



https://www.w3schools.com/jsref/jsref_sort.asp By default, the sort() method sorts the values as strings in alphabetical and ascending order. По умолчанию, метод sort сортирует значения как строки в алфавитном порядке, по возрастанию. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort The default sort order is according to string Unicode code points. Про nArr.sort(function(a, b){ return a-b; }); Вы, скорее всего, знаете. Пример из Проблемма с сортировкой массива function median(data) { data.sort((a, b) => a - b); return data; } console.log(median([1, 2, 3, 4, 5])); console.log(median([3, 1, 2, 5, 3])); console.log(median([1, 300, 2, 200, 1])); console.log(median([3, 6, 20, 99, 10, 15]));

Ответ 2



.sort в любом случае сортирует массив как строку. Если нужно изменить его поведение, то нужно использовать функцию определяющую порядок сортировки. Подробнее можно посмотреть в любом описании метода sort, а рабочий пример есть ниже. var inputStr = '235 1 0.9 -5 -98 25 -634.1'; var nArr; nArr = inputStr.split(' '); alert(nArr); nArr.sort(function(a, b) { return a-b; }); alert(nArr);

Ответ 3



var inputStr = [5, 2, 1, -10, 8]; function compare(a, b) { return a - b; } inputStr.sort(compare); console.log(inputStr); и в обратном порядке: var inputStr = [5, 2, 1, -10, 8]; function compare(a, b) { return b - a; } inputStr.sort(compare); console.log(inputStr);

Комментариев нет:

Отправить комментарий