Razvrščanje objektov JavaScript po lastnosti niza
Razvrščanje nizov predmetov je običajna naloga v JavaScriptu, zlasti pri delu s podatki, ki morajo biti prikazani v določenem vrstnem redu. En tipičen scenarij vključuje razvrščanje niza predmetov po vrednosti lastnosti niza, kot je priimek ali naslov.
V tem članku bomo raziskali, kako razvrstiti matriko objektov JavaScript po vrednosti lastnosti niza. Preučili bomo uporabo metode `sort()` in razpravljali o tem, ali so potrebni dodatni koraki, kot je dodajanje metode `toString()` objektom.
Ukaz | Opis |
---|---|
sort(function(a, b) {...}) | Definira funkcijo razvrščanja po meri za določanje vrstnega reda elementov matrike na podlagi posebnih meril. |
localeCompare() | Primerja dva niza v trenutnih področnih nastavitvah in vrne številko, ki označuje, ali je referenčni niz pred ali za ali je enak danemu nizu. |
console.log() | Izpiše informacije v konzolo, običajno za namene odpravljanja napak. |
Podrobna razlaga razvrščanja predmetov JavaScript
Zgoraj navedeni skripti so zasnovani za razvrščanje matrike objektov JavaScript po vrednosti klicane lastnosti niza last_nom. V prvem primeru uporabljamo sort(function(a, b) {...}) metoda, ki nam omogoča definiranje funkcije razvrščanja po meri. Ta funkcija primerja last_nom lastnost vsakega predmeta. Če je prvi predmet last_nom je manjši od drugega predmeta last_nom, vrne -1, kar pomeni, da mora biti prvi predmet pred drugim. Če je prvi predmet last_nom večji, vrne 1, kar pomeni, da bi moral biti prvi predmet za drugim. Če sta enaka, vrne 0, kar pomeni, da morata njihova položaja ostati nespremenjena.
Drugi skript uporablja bolj jedrnato sintakso ES6. The localeCompare() metoda se uporablja znotraj sort() funkcijo za primerjavo last_nom lastnosti predmetov. Ta metoda vrne številko, ki označuje, ali je niz pred, za ali enak drugemu nizu v trenutnih področnih nastavitvah. The console.log() funkcija se uporablja v obeh skriptih za izpis razvrščenega niza v konzolo za preverjanje. Obe metodi učinkovito razvrščata niz predmetov po last_nom lastnosti, ki prikazuje, kako obravnavati razvrščanje lastnosti objektov v JavaScriptu.
Razvrščanje niza predmetov glede na lastnost niza v JavaScriptu
JavaScript na strani odjemalca
var objs = [
{first_nom: 'Laszlo', last_nom: 'Jamf'},
{first_nom: 'Pig', last_nom: 'Bodine'},
{first_nom: 'Pirate', last_nom: 'Prentice'}
];
objs.sort(function(a, b) {
if (a.last_nom < b.last_nom) {
return -1;
}
if (a.last_nom > b.last_nom) {
return 1;
}
return 0;
});
console.log(objs);
Razvrščanje matrike predmetov glede na lastnost niza z uporabo sintakse ES6
ES6 JavaScript
const objs = [
{first_nom: 'Laszlo', last_nom: 'Jamf'},
{first_nom: 'Pig', last_nom: 'Bodine'},
{first_nom: 'Pirate', last_nom: 'Prentice'}
];
objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom));
console.log(objs);
Razvrščanje niza predmetov glede na lastnost niza v JavaScriptu
JavaScript na strani odjemalca
var objs = [
{first_nom: 'Laszlo', last_nom: 'Jamf'},
{first_nom: 'Pig', last_nom: 'Bodine'},
{first_nom: 'Pirate', last_nom: 'Prentice'}
];
objs.sort(function(a, b) {
if (a.last_nom < b.last_nom) {
return -1;
}
if (a.last_nom > b.last_nom) {
return 1;
}
return 0;
});
console.log(objs);
Razvrščanje matrike predmetov glede na lastnost niza z uporabo sintakse ES6
ES6 JavaScript
const objs = [
{first_nom: 'Laszlo', last_nom: 'Jamf'},
{first_nom: 'Pig', last_nom: 'Bodine'},
{first_nom: 'Pirate', last_nom: 'Prentice'}
];
objs.sort((a, b) => a.last_nom.localeCompare(b.last_nom));
console.log(objs);
Napredne tehnike za razvrščanje predmetov v JavaScriptu
Pri razvrščanju matrike predmetov glede na lastnost niza v JavaScriptu je bistveno razumeti zapletenost sort() metoda. Privzeto je sort() metoda razvrsti elemente kot nize. To lahko vodi do nepričakovanih rezultatov pri delu s številkami ali posebnimi znaki. Če želite zagotoviti natančno razvrščanje, zlasti z lastnostmi nizov, morate uporabiti funkcijo primerjave po meri. Poleg localeCompare(), je še ena uporabna tehnika obravnavanje občutljivosti na velike in male črke. Primerjava nizov v JavaScriptu privzeto razlikuje med velikimi in malimi črkami, zato bo 'a' manj kot 'A'. Da bi se temu izognili, lahko vse nize pretvorite v male ali velike črke v svoji funkciji za primerjavo.
Drug pomemben vidik, ki ga je treba upoštevati, je razvrščanje po več lastnostih. Na primer, če imata dva predmeta enako last_nom vrednosti, jih boste morda želeli dodatno razvrstiti po first_nom. To je mogoče doseči z razširitvijo funkcije primerjave po meri, da vključi dodatne pogoje. Takšno večnivojsko razvrščanje zagotavlja celovito urejenost podatkov, kar zagotavlja bolj smiselne rezultate. Z razumevanjem in uporabo teh naprednih tehnik razvrščanja lahko v JavaScriptu učinkovito obravnavate bolj zapletene scenarije razvrščanja podatkov.
Pogosta vprašanja o razvrščanju objektov JavaScript
- Kako razvrstite matriko predmetov glede na lastnost niza?
- Uporabi sort() metoda s funkcijo primerjave po meri z uporabo localeCompare() za primerjavo nizov.
- Ali razvrščanje JavaScript razlikuje med velikimi in malimi črkami?
- Da, privzeto. Pretvorite nize v male ali velike črke v funkciji primerjave, da se temu izognete.
- Kako ravnate z razvrščanjem po več lastnostih?
- Razširite funkcijo primerjave po meri, da vključite dodatne pogoje za razvrščanje po sekundarnih lastnostih.
- Ali morate dodati a toString() metodo do vaših predmetov za razvrščanje?
- Ne, zadostuje uporaba primerjalne funkcije po meri.
- Kaj počne localeCompare() narediti?
- Primerja dva niza v trenutnih področnih nastavitvah in vrne številko, ki označuje njun vrstni red.
- Ali lahko z isto metodo razvrstite predmete po številskih lastnostih?
- Da, funkcijo primerjave lahko prilagodite tako, da obravnava tudi številske primerjave.
- Kako izpišete razvrščeno matriko?
- Uporaba console.log() da natisnete razvrščeno matriko na konzolo za preverjanje.
- Kakšen je pomen vrnjenih vrednosti v funkciji primerjave?
- Določajo vrstni red elementov: -1 za manj kot, 1 za večje in 0 za enako.
Zaključek razvrščanja predmetov v JavaScriptu
Razvrščanje niza predmetov po lastnosti niza v JavaScriptu je mogoče učinkovito doseči z uporabo sort() metoda s funkcijo primerjave po meri. Z vzvodom localeCompare() in občutljivostjo na velike in male črke lahko zagotovite natančno in smiselno razvrščanje podatkov. Razumevanje teh tehnik omogoča boljšo manipulacijo in predstavitev podatkov ter z lahkoto poskrbi za bolj zapletene scenarije. Poleg tega razvrščanje po več lastnostih doda še eno plast prefinjenosti, zaradi česar je razvrščeni izhod bolj ustrezen in organiziran.