Selles näites õpid kirjutama JavaScripti programmi, mis sorteerib objektide massiivi atribuutide väärtuste järgi.
Selle näite mõistmiseks peaksid teil olema teadmised järgmistest JavaScripti programmeerimise teemadest:
- JavaScripti massiivi sort ()
- JavaScripti massiiv
- JavaScripti objektid
Näide 1: massiivi sortimine atribuudi nime järgi
// 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));
Väljund
((nimi: "Jack", vanus: 25), (nimi: "John", vanus: 24), (nimi: "Sara", vanus: 24))
Ülaltoodud programmis kasutatakse sort()
meetodit massiivi sortimiseks selle objektielementide nimeomaduste järgi.
sort()
Meetod sorteerib oma elemendid vastavalt väärtuste tagastatud kohandatud omamoodi funktsioon (compareName antud juhul).
Siin,
- Atribuutide nimed muudetakse
toUpperCase()
meetodi abil suurtähtedeks . - Kui kahe nime võrdlemisel saadakse 1 , siis nende järjestust muudetakse.
- Kui kahe nime võrdlemisel saadakse -1 või 0 , siis nende järjestus jääb samaks.
Näide 2: massiivi sortimine vara vanuse järgi
// 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));
Väljund
((nimi: "John", vanus: 22), (nimi: "Sara", vanus: 24), (nimi: "Jack", vanus: 27))
Ülaltoodud programmis kasutatakse sort()
meetodit massiivi elemendi sortimiseks vanuse atribuudi järgi.
Kahe objekti vanuseomaduste võrdlemiseks võime need lihtsalt lahutada.
- Kui nende erinevus on negatiivne väärtus, muudetakse nende järjekorda.
- Kui nende erinevus on positiivne väärtus, jäetakse järjestus selliseks, nagu see on.