JavaScript Сортировка массива
Сортировка массива
Метод sort()
сортирует массив по алфавиту:
Пример
var fruits = ["Банан", "Апельсин", "Яблоко", "Манго"];
fruits.sort(); // Сортировка элементов фруктов
Редактор кода »
Реверсирование массива
Метод reverse()
отменяет элементы в массиве.
Его можно использовать для сортировки массива по убыванию:
Пример
var fruits = ["Банан", "Апельсин", "Яблоко", "Манго"];
fruits.sort();
// Сначала отсортируем элементы фруктов
fruits.reverse();
// Затем изменим порядок элементов
Редактор кода »
Сортировка чисел
По умолчанию функция 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});
Редактор кода »
Функция сравнения
Функция сравнения предназначена для определения альтернативного порядка сортировки.
Функция сравнения должна возвращать отрицательное, нулевое или положительное значение, в зависимости от аргумента:
function(a, b){return a-b}
Когда функция sort()
сравнивает два значения, она отправляет значения
сравнить функцию и сортирует значения по возврату (минус, нулевое, положительное) значение.
Пример:
При сравнении 40 и 100 метод sort()
вызывает функцию сравнения (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()});
Найти наибольшее или наименьшее значение массива
Нет встроенных функций для нахождения максимального и минимального значение в массиве.
Однако, у вас есть отсортированный массив, вы можете использовать индекс для получения самых высоких и самых низких значений.
Сортировка по возрастанию:
Пример
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
, чтобы найти наибольшее число в массиве:
Math.max.apply([1, 2, 3])
эквивалентно Math.max(1, 2, 3)
.
Использовать Math.min()
в массиве
Вы можете использовать Math.min.apply
для поиска наименьшего числа в массиве:
Math.min.apply([1, 2, 3])
эквивалентно Math.min(1, 2, 3)
.
JavaScript методы Min / Max
Самым быстрым решением является использование "домашний" метод.
Эта функция выполняет цикл через массив, сравнивая каждое значение с наибольшим найденным значением:
Пример (найти 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:"Вольво", year:2016},
{type:"Сааб", year:2001},
{type:"БМВ", year:2010}];
Даже если объекты имеют свойства различных типов данных, метода sort()
может использоваться для сортировки массива.
Решение состоит в том, чтобы написать функцию сравнение для сравнения значений свойств:
Сравнение строковых свойств немного сложнее:
Пример
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;
});
Редактор кода »