Inter-Net.PRO

Сортировка цифрового массива в JavaScript

  • 250 60
06 нояб 2018 00:03 - 06 нояб 2018 00:20 #1 от Inter-Net PRO
В 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 необходимо передать калбек функцию.
Решение для правильной сортировки цифрового массива:
let 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]

Авторизация

Войти через соцсети: