Šiame pavyzdyje išmoksite rašyti „JavaScript“ programą, kuri rūšiuos objektų masyvą pagal nuosavybės vertes.
Norėdami suprasti šį pavyzdį, turite žinoti šias „JavaScript“ programavimo temas:
- „JavaScript“ masyvo rūšiavimas ()
- „JavaScript“ masyvas
- „JavaScript“ objektai
1 pavyzdys: rūšiuokite masyvą pagal nuosavybės pavadinimą
// 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));
Rezultatas
((vardas: „Jack“, amžius: 25), (vardas: „John“, amžius: 24), (vardas: „Sara“, amžius: 24))
Ankstesnėje programoje sort()
metodas naudojamas masyvui rūšiuoti pagal objekto elementų ypatybes.
sort()
Metodas rūšiuoja savo elementus pagal vertybes grąžinti pagal užsakymą rūšiavimo funkcija (compareName šiuo atveju).
Čia
- Naudojant
toUpperCase()
metodą, ypatybių pavadinimai keičiami į didžiąsias . - Jei lyginant du vardus gaunama 1 , jų tvarka keičiama.
- Jei lyginant du vardus gaunama -1 arba 0 , tada jų tvarka paliekama tokia, kokia yra.
2 pavyzdys: rūšiuokite masyvą pagal nuosavybės amžių
// 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));
Rezultatas
((vardas: „Jonas“, amžius: 22), (vardas: „Sara“, amžius: 24), (vardas: „Džekas“, amžius: 27))
Pirmiau pateiktoje programoje sort()
metodas naudojamas masyvo elementui rūšiuoti pagal amžiaus ypatybę.
Norėdami palyginti dviejų objektų amžiaus ypatybes, galime juos tiesiog atimti.
- Jei jų skirtumas yra neigiama reikšmė, jų tvarka keičiama.
- Jei jų skirtumas yra teigiama reikšmė, tvarka paliekama tokia, kokia yra.