Сортировка числового массива
В JavaScript сортировку массивов выполняют при помощи метода sort()
. Сам метод изменяет исходный массив.
Пример сортировки:
let arr = ['f', 'k', 'j', 'a', 'z', 'd', 'v'];
arr.sort();
console.log(arr); // → ["a", "d", "f", "j", "k", "v", "z"]
Как видно в примере, метод sort()
возвращает массив отсортированный в алфавитном порядке.
Проблема возникает когда мы хотим сортировать массивы состоящие из числовых значений.
Например:
console.log([15, 10, 2].sort()); // → [10, 15, 2]
Неправильная сортировка чисел происходит из за того что метод sort
сравнивает числа как строки.
Для того чтобы sort
правильно отсортировал цифровой массив, для этого в метод sort необходимо передать калбек функцию.
Решение для правильной сортировки цифрового массива:
var num = [10, 2, 15, 7, 1, 3, 28];
num.sort(function (prev, next) {
return prev - next
});
console.log(num); // → [1, 2, 3, 7, 10, 15, 28]
Тоже самое в синтаксисе ES-6 (стрелочная функция)
let num = [10, 2, 15, 7, 1, 3, 28];
num.sort((a, b) => a - b);
console.log(num); // → [1, 2, 3, 7, 10, 15, 28]
*** Войдите чтобы писать комментарии.