массивы сортировки JavaScript
Сортировка массива
Метод Sort () сортирует массив по алфавиту:
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // Sorts the elements of fruits
Обращение к массиву
Метод Reverse () изменяет элементы массива на обратный.
Его можно использовать для сортировки массива в порядке убывания:
Пример
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
// First sort the elements of fruits
fruits.reverse();
// Then reverse the order of the elements
Числовая сортировка
По умолчанию функция Sort () сортирует значения в виде строк.
Это хорошо работает для струнных ("яблоко" приходит перед "банан").
Однако, если числа сортируются как строки, "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});
Функция сравнения
Назначение функции Compare заключается в определении альтернативного порядка сортировки.
Функция Compare должна возвращать отрицательное, нулевое или положительное значение в зависимости от аргументов:
function(a, b){return a-b}
Когда функция Sort () сравнивает два значения, она отправляет значения в функцию Compare и сортирует значения в соответствии с возвращаемым (отрицательным, нулевым, положительным) значением.
Примере:
При сравнении 40 и 100 метод Sort () вызывает функцию Compare (40100).
Функция вычисляет 40-100 и возвращает-60 (отрицательное значение).
Функция сортировки будет сортировать 40 как значение ниже 100.
Этот фрагмент кода можно использовать для экспериментов с сортировкой по числу и по алфавиту:
<button onclick="myFunction1()">Sort Alphabetically</button>
<button
onclick="myFunction2()">Sort Numerically</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()});
Найти наибольшее (или наименьшее) значение массива
Нет встроенных функций для поиска максимального или минимального значения в массиве.
Однако после сортировки массива можно использовать индекс для получения максимальных и наименьших значений.
Сортировка по возрастанию:
Пример
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value
Сортировка по убыванию:
Пример
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value
Сортировка всего массива является очень неэффективным методом, если вы хотите найти только самое высокое (или наименьшее) значение.
Использование Math. max () в массиве
Вы можете использовать Math. max. Apply для поиска наибольшего числа в массиве:
Пример
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
Math.max.apply([1, 2, 3]) is equivalent to Math.max(1, 2, 3).
Использование Math. min () в массиве
Для поиска наименьшего числа в массиве можно использовать Math. min.:
Пример
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
Мат. мин. Нанесите ([1, 2, 3]) эквивалентно математике. min (1, 2, 3).
Мои минимальные/максимальные методы JavaScript
Самое быстрое решение заключается в использовании "домашний" метод.
Эта функция выполняет циклический перебор по массиву, сравнивая каждое значение с максимальным найденным значением:
Пример (найти Макс.)
function myArrayMax(arr) {
var len = arr.length
var max = -Infinity;
while (len--) {
if (arr[len]> max) {
max = arr[len];
}
}
return max;
}
Эта функция выполняет циклический перебор массива, сравнивая каждое значение с наименьшим найденным значением:
Пример (найти мин.)
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){return a.year - b.year});
Сравнение строковых свойств немного сложнее:
Пример
cars.sort(function(a, b){
var x = a.type.toLowerCase();
var y = b.type.toLowerCase();
if (x <y) {return -1;}
if (x> y) {return 1;}
return 0;
});