W tym przykładzie nauczysz się pisać program JavaScript, który będzie sortował tablicę obiektów według wartości właściwości.
Aby zrozumieć ten przykład, powinieneś znać następujące tematy programowania JavaScript:
- JavaScript Array sort ()
- JavaScript Array
- Obiekty JavaScript
Przykład 1: Sortuj tablicę według nazwy właściwości
// 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));
Wynik
((imię: „Jack”, wiek: 25), (imię: „John”, wiek: 24), (imię: „Sara”, wiek: 24))
W powyższym programie sort()
metoda służy do sortowania tablicy według właściwości name jej elementów obiektowych.
sort()
Sposób jego elementy sortowane w zależności od wartości zwróconych przez funkcję zwyczaj sortowania (compareName w tym przypadku).
Tutaj,
- Nazwy właściwości są zamieniane na wielkie litery przy użyciu
toUpperCase()
metody. - Jeśli porównanie dwóch nazw daje 1 , to ich kolejność ulega zmianie.
- Jeśli porównanie dwóch nazw daje wynik -1 lub 0 , to ich kolejność pozostaje niezmieniona.
Przykład 2: Sortuj tablicę według wieku właściwości
// 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));
Wynik
((imię: „John”, wiek: 22), (imię: „Sara”, wiek: 24), (imię: „Jack”, wiek: 27))
W powyższym programie sort()
metoda służy do sortowania elementu tablicy według właściwości age.
Aby porównać właściwość age dwóch obiektów, możemy je po prostu odjąć.
- Jeśli ich różnica jest wartością ujemną, ich kolejność ulega zmianie.
- Jeśli ich różnica jest wartością dodatnią, kolejność pozostaje bez zmian.