Метод JavaScript Array sort() сортирует элементы массива в определенном порядке. Этот метод позволяет очень легко переупорядочить массив.
Например, вы можете использовать метод sort() для упорядочивания массива чисел в числовом порядке, а массива строк — в алфавитном порядке, например списка имен.
Метод Array.sort() сортирует элементы массива на своем месте и возвращает отсортированный массив. То есть метод sort() перезаписывает исходный массив. Он не создает новый массив.
Метод sort() сортирует элементы массива либо по алфавиту, либо по числам, а также по возрастанию (вверх) или убыванию (вниз).
- Синтаксис метода сортировки массива JavaScript
- Сортировка массива элементов в алфавитном порядке
- Сортировка элементов массива в произвольном порядке
- Сортировка массива чисел в порядке возрастания
- Сортировка элементов массива в порядке убывания
- Сортировать элементы массива в алфавитном порядке без учета регистра
- Сортировка массива объектов по значению свойства
- Программа для поиска наименьшего и наибольшего числа
- Поддержка браузера
Синтаксис метода сортировки массива JavaScript
Общий синтаксис определения метода sort() в JavaScript выглядит следующим образом:
array.sort(compareFunction);
В приведенной выше функции compareFunction является необязательной. Она используется для определения пользовательского порядка сортировки. Эта функция возвращает отрицательное, нулевое или положительное значение в зависимости от аргументов.
Когда метод sort() сравнивает два значения, он отправляет значения в функцию сравнения и сортирует их в соответствии с результирующим значением (отрицательное, ноль, положительное).
Если «compareFunction» не указан, интерпретатор JavaScript сортирует элементы массива, преобразуя их в строки и сравнивая строки в лексикографическом порядке.
Например, «80» предшествует «9» в лексикографическом порядке, но при числовой сортировке 9 предшествует 80. Поскольку числа преобразуются в строки, «80» предшествует «9» в порядке Unicode.
Если массив содержит неопределенные элементы, интерпретатор JavaScript сортирует их в конце массива.
Сортировка массива элементов в алфавитном порядке
Если вызвать метод sort() без аргументов, метод sort() массива сортирует элементы массива в алфавитном порядке. Давайте рассмотрим пример программы на его основе.
Пример 1:
<script>
// Create an array of elements.
const names = ["Paul", "Tripti", "Sarah", "Ivaan", "Rashmi"];
const n = names.sort(); // passing no arguments.
document.write("Sorted names in alphabetical order: ", "<br>");
document.write(n);
</script>
Output: Sorted names in alphabetical order: Ivaan,Paul,Rashmi,Sarah,Tripti
Пример 2:
<script>
// Create an array of elements.
const names = ["Paul", "Tripti", "Sarah", "Ivaan", "Rashmi"];
names.sort(); // passing no arguments.
document.write("List of names in alphabetical order: ", "<br>");
for(let i = 0; i < names.length; i++)
{
document.write(names[i], "<br />");
}
</script>
Output: List of names in alphabetical order: Ivaan Paul Rashmi Sarah Tripti
Сортировка элементов массива в произвольном порядке
Чтобы отсортировать массив элементов в определенном порядке, отличном от алфавитного, необходимо передать функцию сравнения в качестве аргумента методу sort().
Функция сравнения получает два различных элемента массива и сравнивает их. Она возвращает число, которое определяет, какое из двух значений аргумента появится первым в отсортированном массиве. То есть число определяет результат.
Функция сравнения вернет число меньше нуля, если первое значение будет отсортировано раньше второго.
Если первое значение в отсортированном массиве следует за вторым, функция вернет число больше нуля.
Если оба значения эквивалентны, функция сравнения вернет 0. Давайте напишем общую функцию сравнения.
function compare(a, b) {
if (a > b) {
return 1;
} else if (b > a) {
return -1;
} else {
return 0;
}
}
Давайте рассмотрим пример программы для сортировки массива элементов в числовом, а не в алфавитном порядке.
Пример 3:
<script>
let nums = [55, 5, 1111, 222];
// Sorting array elements in alphabetical order.
let x = nums.sort();
document.write("Alphabetical order: ", "<br>");
document.write(x);
document.write("<br />");
// Sorting array elements numerical.
document.write("Numerical order: ", "<br>");
let y = nums.sort(function(a, b) {
return a - b; // returns < 0, 0, or > 0.
}
);
document.write(y);
</script>
Output: Alphabetical order: 1111,222,5,55 Numerical order: 5,55,222,1111
Сортировка массива чисел в порядке возрастания
Давайте создадим программу JavaScript для сортировки массива чисел по возрастанию с использованием функции сравнения.
Пример 4:
<script>
let nums = [555, 30, 5, 40, 20, 10];
// Sorting array elements in ascending order.
document.write("Ascending order: ", "<br>");
let y = nums.sort(function(a, b) {
return a - b; // returns < 0, 0, or > 0.
}
);
document.write(y);
</script>
Output: Ascending order: 5,10,20,30,40,555
Сортировка элементов массива в порядке убывания
Давайте создадим программу JavaScript для сортировки массива чисел в порядке убывания с использованием функции сравнения.
Пример 5:
<script>
let nums = [555, 30, 5, 40, 20, 10];
// Sorting array elements in descending order.
document.write("Descending order: ", "<br>");
let y = nums.sort(function(a, b) {
return b - a; // returns < 0, 0, or > 0.
}
);
document.write(y);
</script>
Output: Descending order: 555,40,30,20,10,5
Сортировать элементы массива в алфавитном порядке без учета регистра
Мы также можем выполнить алфавитный порядок без учета регистра, используя функцию сравнения. Давайте рассмотрим пример программы, основанной на этом.
Пример 6:
<script>
let colors = ["Red", "pink", "green", "Brown"];
// Sorting array elements in case-sensitive alphabetical order.
document.write("Case-sensitive sort: ", "<br>");
let x = colors.sort();
document.write(x);
document.write("<br/>");
document.write("Case-insensitive sort: ","<br/>");
let y = colors.sort(function(a, b) {
let p = a.toLowerCase();
let q = b.toLowerCase();
if(p < q) return -1;
if(p > q) return 1;
return 0;
}
);
document.write(y);
</script>
Output: Case-sensitive sort: Brown,Red,green,pink Case-insensitive sort: Brown,green,pink,Red
Сортировка массива объектов по значению свойства
Мы можем отсортировать массив, содержащий объекты, на основе значений свойств. Давайте возьмем пример программы, в которой мы будем сортировать массив объектов с информацией о людях.
Пример 7:
<script>
const people = [
{name: "Tripti", age: 23},
{name: "Ivaan", age: 5},
{name: "John", age: 20},
{name: "Tammy", age: 19}
];
// Sort the people from youngest to oldest by age.
people.sort(function(a, b) {
if(a.age < b.age) {
return -1;
} else if(a.age > b.age) {
return 1;
} else {
return 0;
}
});
console.log(people);
</script>
Output: Ivaan, Tammy, John, Tripti
Мы также можем написать гораздо более короткую функцию сравнения, например:
people.sort(function(a, b) {
// Subtract ages to sort from youngest to oldest.
return a.age - b.age;
});
Вы также можете написать приведенный выше код с помощью компактного синтаксиса стрелок, например так:
people.sort((a, b) => a.age - b.age);
Мы также можем написать функцию сравнения для сортировки по имени следующим образом:
// Sort the people by name.
people.sort(function(a, b) {
const nameA = a.name.toUpperCase(); // ignore upper and lowercase
const nameB = b.name.toUpperCase(); // ignore upper and lowercase
if(nameA < nameB) {
return -1;
} else if (nameA > nameB) {
return 1;
} else {
return 0;
}
});
console.log(people);
// Using arrow function.
people.sort((a, b) => a.name.localeCompare(b.name));
console.log(people);
Output: Ivaan, John, Tammy, Tripti
Программа для поиска наименьшего и наибольшего числа
Давайте напишем программу на JavaScript для поиска наименьшего и наибольшего числа среди различных чисел.
Пример 8:
<script>
const numbers = [40, 100, 10, 5, 25, 15];
// Sort the numbers in ascending order:
numbers.sort(function(a, b) {
return a - b;
});
document.write("Lowest number: " +numbers[0]);
</script>
Output: Lowest number: 5
Пример 9:
<script>
const numbers = [40, 100, 10, 5, 25, 15];
// Sort the numbers in descending order:
numbers.sort(function(a, b) {
return b - a;
});
document.write("Highest number: " +numbers[0]);
</script>
Output: Highest number: 100
Мы также можем написать код для вышеуказанной программы следующим образом:
Пример 10:
<script>
const numbers = [40, 100, 10, 5, 25, 15];
// Sort the numbers in ascending order:
numbers.sort(function(a, b) {
return a - b;
});
document.write("Highest number: " +numbers[numbers.length - 1]);
</script>
Поддержка браузера
Метод sort() является важной особенностью ECMAScript1 (ES1). Все браузеры полностью поддерживают ES1 (JavaScript 1997).
В этом уроке вы изучили метод JavaScript array sort() с различными примерами программ. Надеюсь, вы поняли основные концепции метода sort() в JavaScript. Спасибо за чтение!!!