Сортировка массива объектов в JavaScript по алфавиту

Ammar Ali 30 Январь 2023 3 Июль 2021
  1. Сортировка массива объектов в алфавитном порядке с использованием условия if и функции sort() в JavaScript
  2. Сортировка массива объектов в алфавитном порядке с помощью функций localeCompare() и sort() в JavaScript
  3. Сортировка массива объектов в алфавитном порядке с помощью функций Collator() и sort() в JavaScript
Сортировка массива объектов в JavaScript по алфавиту

В этом руководстве будет обсуждаться сортировка массива объектов по алфавиту с помощью функции sort() в JavaScript.

Сортировка массива объектов в алфавитном порядке с использованием условия if и функции sort() в JavaScript

Если у нас есть массив строк или целых чисел, мы можем легко отсортировать их с помощью функции sort() в JavaScript. Например, отсортируем массив строк по алфавиту с помощью функции sort(). См. Код ниже.

var a = ['banana', 'apple', 'orange']
var m = a.sort();
console.log(m);

Выход:

Array(3)
0: "apple"
1: "banana"
2: "orange"
length: 3

Как видите, массив отсортирован по алфавиту, а результат сохраняется в переменной m. Если у нас есть массив объектов, мы должны использовать некоторые условия перед использованием функции sort() для сортировки массива. Например, если у нас есть массив объектов, содержащий имя и фамилию некоторых людей, и мы хотим отсортировать массив по фамилии людей. Мы должны передать функцию внутри функции sort(), которая будет сравнивать фамилию каждого человека, и если фамилия первого человека меньше, чем фамилия второго человека, функция вернет отрицательное значение, а если оно больше, функция вернет положительное значение; и если оба равны, функция вернет ноль. См. Код ниже.

var a = [
	{FirsName:"Ellie", LastName:"Williams"},
	{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
    if (x.LastName < y.LastName) {return -1;}
    if (x.LastName > y.LastName) {return 1;}
    return 0;
}
var s = a.sort(SortArray);
console.log(s);

Выход:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2

Как видите, массив отсортирован по фамилии. Вы также можете увеличить количество объектов внутри массива. Вы также можете отсортировать массив по имени.

Сортировка массива объектов в алфавитном порядке с помощью функций localeCompare() и sort() в JavaScript

Вместо использования условия if вы также можете использовать функцию localeCompare() для сравнения строк. Он предоставляет множество других опций для сравнения, которые вы можете установить внутри функции. Например, сравним указанный выше массив объектов с помощью функции localeCompare(). См. Код ниже.

var a = [
	{FirsName:"Ellie", LastName:"Williams"},
	{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
    return x.LastName.localeCompare(y.LastName);
}
var s = a.sort(SortArray);
console.log(s);

Выход:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2

Результат такой же, как и в приведенном выше методе. Вы также можете настроить функцию, чтобы игнорировать любые знаки препинания и специальные символы во время сравнения. Например, если перед фамилией человека стоит знак препинания, функция не сортирует массив. В этом случае мы можем использовать функцию localeCompare() и настроить ее так, чтобы она игнорировала знаки препинания при сравнении. См. Код ниже.

var a = [
	{FirsName:"Ellie", LastName:",Williams"},
	{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
    return x.LastName.localeCompare(y.LastName, 'fr', {ignorePunctuation: true});
}
var s = a.sort(SortArray);
console.log(s);

Выход:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: ",Williams"}
length: 2

Массив сортируется по фамилии даже при наличии знаков препинания. Вы также можете игнорировать специальные символы, если они присутствуют в строке, установив чувствительность функции localeCompare() равной base, как показано ниже.

x.LastName.localeCompare(y.LastName, 'en', { sensitivity: 'base' });

Проверьте эту ссылку для получения более подробной информации о функции localeCompare().

Сортировка массива объектов в алфавитном порядке с помощью функций Collator() и sort() в JavaScript

Вместо использования условия if вы также можете использовать функцию Collator() для сравнения строк. Например, сравним указанный выше массив объектов с помощью функции Collator(). См. Код ниже.

const collator = new Intl.Collator('en');
var a = [
	{FirsName:"Ellie", LastName:"Williams"},
	{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
    return collator.compare(x.LastName, y.LastName);
}
var s = a.sort(SortArray);
console.log(s);

Выход:

(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2

Вывод такой же, как и в вышеупомянутых методах. Вы также можете изменить порядок сортировки по убыванию, изменив место двух аргументов в функции collator.compare(). Вы также можете использовать функцию Collator() для сравнения строк на другом языке; вам просто нужно инициализировать объект подборщика на этом языке. Например, в приведенном выше коде мы использовали en для английского языка. Посетите эту ссылку, чтобы узнать больше о функции Collator().

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Сопутствующая статья - JavaScript Array