Метод сортировки массива JavaScript()

JavaScript

Метод JavaScript Array sort() сортирует элементы массива в определенном порядке. Этот метод позволяет очень легко переупорядочить массив.

Например, вы можете использовать метод sort() для упорядочивания массива чисел в числовом порядке, а массива строк — в алфавитном порядке, например списка имен.

Метод Array.sort() сортирует элементы массива на своем месте и возвращает отсортированный массив. То есть метод sort() перезаписывает исходный массив. Он не создает новый массив.

Метод sort() сортирует элементы массива либо по алфавиту, либо по числам, а также по возрастанию (вверх) или убыванию (вниз).

Синтаксис метода сортировки массива 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. Спасибо за чтение!!!

Оцените статью
Adblock
detector