Сортировка массивов JavaScript
- Предыдущая страница Поиск массивов JS
- Следующая страница Итерация массивов JS
sort()
Этот метод является одним из самых мощных методов массива.
Сортировка массива
sort()
Метод сортирует массив в алфавитном порядке:
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Сортировка элементов в fruits
Обратная сортировка массива
reverse()
Метод обратной сортировки элементов в массиве.
Вы можете использовать его для сортировки массива в обратном порядке:
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Сортировка элементов в fruits fruits.reverse(); // Обратная сортировка элементов
Числовая сортировка
По умолчаниюsort()
Функция сортируетСтрокипорядок сортировки значений.
Эта функция подходит для строк ("Apple" будет排在 "Banana" перед).
Однако, если числа сортируются как строки, то "25" больше, чем "100", потому что "2" больше, чем "1".
Таким образомsort()
Метод может генерировать неправильные результаты при сортировке числовых значений.
Мы используемФункция сравнения значенийЧтобы исправить эту проблему:
Пример
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Используйте такой же приём для сортировки массива в обратном порядке:
Пример
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Функция сравнения значений
Цель функции сравнения - определить другой порядок сортировки.
Функция сравнения должна возвращать отрицательное, нулевое или положительное значение в зависимости от параметров:
function(a, b){return a-b}
Когда sort()
Функция сравнения отправляет значения в функцию сравнения и сортирует их в зависимости от возвращаемого значения (отрицательного, нуля или положительного)。
Пример:
Когда сравнивается 40 и 100,sort()
Метод вызывает функцию сравнения function(40,100).
Функция вычисляет 40-100 и возвращает -60 (отрицательное значение).
Функция сортировки будет сортировать 40 как значение, более низкое, чем 100.
Вы можете использовать следующий фрагмент кода для тестирования числового и алфавитного排序а:
<button onclick="myFunction1()">Сортировать по алфавитному порядку</button> <button onclick="myFunction2()">Сортировать по числовому порядку</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
Сортировать массив в случайном порядке
Пример
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Найти максимальное (или минимальное) значение массива
JavaScript не предоставляет встроенных функций для поиска максимального или минимального значения в массиве.
После сортировки массива вы можете использовать индекс, чтобы получить максимальное или минимальное значение.
Сортировка по возрастанию:
Пример
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Теперь points[0] содержит минимальное значение // А points[points.length-1] содержит максимальное значение
Сортировка по убыванию:
Пример
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Теперь points[0] содержит максимальное значение // А points[points.length-1] содержит минимальное значение
Если вам нужно найти только максимальное или минимальное значение, сортировка всего массива - это метод с низкой эффективностью.
использовать Math.max() для массива
Вы можете использовать Math.max.apply
чтобы найти максимальное значение в массиве:
Пример
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
равно Math.max(1, 2, 3)
。
использовать Math.min() для массива
Вы можете использовать Math.min.apply
чтобы найти минимальное значение в массиве:
Пример
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
равно Math.min(1, 2, 3)
。
Мои методы Min / Max на JavaScript
Самый быстрый способ решения - это использование «собственного» метода.
Эта функция перебирает массив и сравнивает найденный максимальный значения с каждым значением:
Пример (поиск Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Эта функция перебирает массив и сравнивает найденный минимальный значения с каждым значением:
Пример (поиск Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Сортировка массивов объектов
JavaScript массивы часто содержат объекты:
Пример
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Даже если объекты имеют различные типы данных свойств:sort()
Этот метод все еще можно использовать для сортировки массива.
Решение проблемы - использование функции сравнения для сравнения значений свойств:
Пример
cars.sort(function(a, b){возврат a.year - b.year});
Сравнение свойств строки несколько сложнее:
Пример
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {возврат -1;} if (x > y) {возврат 1;} возврат 0; });
- Предыдущая страница Поиск массивов JS
- Следующая страница Итерация массивов JS