В этом примере вы научитесь писать программу на JavaScript, которая будет сортировать массив объектов по значениям свойств.
Чтобы понять этот пример, вы должны знать следующие темы программирования JavaScript:
- Сортировка массива JavaScript ()
- Массив JavaScript
- Объекты JavaScript
Пример 1. Сортировка массива по имени свойства
// program to sort array by property name function compareName(a, b) ( // converting to uppercase to have case-insensitive comparison const name1 = a.name.toUpperCase(); const name2 = b.name.toUpperCase(); let comparison = 0; if (name1> name2) ( comparison = 1; ) else if (name1 < name2) ( comparison = -1; ) return comparison; ) const students = ((name: 'Sara', age:24),(name: 'John', age:24), (name: 'Jack', age:25)); console.log(students.sort(compareName));
Вывод
((имя: «Джек», возраст: 25), (имя: «Джон», возраст: 24), (имя: «Сара», возраст: 24))
В приведенной выше программе sort()
метод используется для сортировки массива по свойству name его элементов объекта.
sort()
Метод сортирует свои элементы в соответствии со значениями , возвращаемые пользовательской функцией сортировки (compareName в данном случае).
Вот,
- Имена свойств изменяются на верхний регистр с помощью этого
toUpperCase()
метода. - Если сравнение двух имен приводит к 1 , то их порядок меняется.
- Если сравнение двух имен приводит к -1 или 0 , то их порядок остается неизменным.
Пример 2: Сортировка массива по возрасту собственности
// program to sort array by property name function compareAge(a, b) ( return a.age - b.age; ) const students = ((name: 'Sara', age:24),(name: 'John', age:22), (name: 'Jack', age:27)); console.log(students.sort(compareAge));
Вывод
((имя: «Джон», возраст: 22), (имя: «Сара», возраст: 24), (имя: «Джек», возраст: 27))
В приведенной выше программе этот sort()
метод используется для сортировки элемента массива по свойству age.
Чтобы сравнить свойство возраста двух объектов, мы можем просто вычесть их.
- Если их разница отрицательная, их порядок меняется.
- Если их разница положительная, порядок остается неизменным.