JavaScript: Triedenie poľa objektov podľa hodnoty vlastnosti

JavaScript: Triedenie poľa objektov podľa hodnoty vlastnosti
JavaScript

Triedenie objektov JavaScriptu podľa vlastnosti reťazca

Triedenie polí objektov je v JavaScripte bežnou úlohou, najmä pri práci s údajmi, ktoré je potrebné zobraziť v určitom poradí. Jeden typický scenár zahŕňa triedenie poľa objektov podľa hodnoty vlastnosti reťazca, ako je priezvisko alebo titul.

V tomto článku preskúmame, ako zoradiť pole objektov JavaScript podľa hodnoty vlastnosti reťazca. Preskúmame použitie metódy `sort()` a prediskutujeme, či sú potrebné ďalšie kroky, ako je pridanie metódy `toString()` k objektom.

Príkaz Popis
sort(function(a, b) {...}) Definuje vlastnú funkciu triedenia na určenie poradia prvkov poľa na základe špecifických kritérií.
localeCompare() Porovná dva reťazce v aktuálnom lokálnom nastavení a vráti číslo označujúce, či referenčný reťazec nasleduje pred alebo za daným reťazcom alebo či je rovnaký ako daný reťazec.
console.log() Výstup informácií do konzoly, zvyčajne na účely ladenia.

Podrobné vysvetlenie triedenia objektov JavaScriptu

Vyššie poskytnuté skripty sú navrhnuté tak, aby zoradili pole objektov JavaScript podľa hodnoty vlastnosti reťazca s názvom last_nom. V prvom príklade použijeme sort(function(a, b) {...}) metóda, ktorá nám umožňuje definovať vlastnú triediacu funkciu. Táto funkcia porovnáva last_nom vlastnosť každého objektu. Ak je prvý objekt last_nom je menšia ako u druhého objektu last_nom, vráti -1, čo znamená, že prvý objekt by mal byť pred druhým. Ak je prvý objekt last_nom je väčší, vráti 1, čo znamená, že prvý objekt by mal nasledovať po druhom. Ak sú rovnaké, vráti 0, čo znamená, že ich pozície by mali zostať nezmenené.

Druhý skript používa stručnejšiu syntax ES6. The localeCompare() metóda sa používa v rámci sort() funkcia na porovnanie last_nom vlastnosti predmetov. Táto metóda vracia číslo, ktoré označuje, či reťazec prichádza pred, za alebo je rovnaký ako iný reťazec v aktuálnom lokálnom nastavení. The console.log() funkcia sa používa v oboch skriptoch na výstup zoradeného poľa do konzoly na overenie. Obe metódy efektívne triedia pole objektov podľa last_nom vlastnosť, ktorá demonštruje, ako zvládnuť triedenie vlastností objektov v JavaScripte.

Triedenie poľa objektov podľa vlastnosti reťazca v JavaScripte

JavaScript na strane klienta

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);

Triedenie poľa objektov podľa vlastnosti reťazca pomocou syntaxe 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);

Triedenie poľa objektov podľa vlastnosti reťazca v JavaScripte

JavaScript na strane klienta

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);

Triedenie poľa objektov podľa vlastnosti reťazca pomocou syntaxe 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);

Pokročilé techniky triedenia objektov v JavaScripte

Pri triedení poľa objektov podľa vlastnosti reťazca v JavaScripte je nevyhnutné pochopiť zložitosť sort() metóda. V predvolenom nastavení je sort() metóda triedi prvky ako reťazce. To môže viesť k neočakávaným výsledkom pri práci s číslami alebo špeciálnymi znakmi. Na zabezpečenie presného triedenia, najmä s vlastnosťami reťazcov, by ste mali použiť vlastnú porovnávaciu funkciu. Okrem tohoto localeCompare(), ďalšou užitočnou technikou je rozlišovanie malých a veľkých písmen. Porovnanie reťazcov JavaScriptu v predvolenom nastavení rozlišuje veľké a malé písmená, takže „a“ sa bude považovať za menšie ako „A“. Aby ste tomu zabránili, môžete v rámci porovnávacej funkcie previesť všetky reťazce na malé alebo veľké písmená.

Ďalším dôležitým aspektom, ktorý treba zvážiť, je triedenie podľa viacerých vlastností. Napríklad, ak majú dva objekty to isté last_nom hodnotu, možno ich budete chcieť ďalej zoradiť podľa first_nom. Dá sa to dosiahnuť rozšírením funkcie vlastného porovnávania o ďalšie podmienky. Takéto viacúrovňové triedenie zaisťuje, že údaje sú usporiadané komplexne a poskytujú zmysluplnejšie výsledky. Pochopením a aplikáciou týchto pokročilých techník triedenia môžete efektívne zvládnuť zložitejšie scenáre triedenia údajov v JavaScripte.

Bežné otázky o triedení objektov JavaScript

  1. Ako triedite pole objektov podľa vlastnosti reťazca?
  2. Použi sort() metóda s vlastnou porovnávacou funkciou, využívajúca localeCompare() pre porovnanie reťazcov.
  3. Rozlišujú sa pri triedení v JavaScripte malé a veľké písmená?
  4. Áno, štandardne. Aby ste tomu zabránili, konvertujte reťazce na malé alebo veľké písmená v rámci porovnávacej funkcie.
  5. Ako riešite triedenie podľa viacerých vlastností?
  6. Rozšírte funkciu vlastného porovnávania tak, aby zahŕňala ďalšie podmienky zoradenia podľa sekundárnych vlastností.
  7. Potrebujete pridať a toString() spôsob triedenia vašich objektov?
  8. Nie, stačí použiť vlastnú porovnávaciu funkciu.
  9. Čo robí localeCompare() robiť?
  10. Porovná dva reťazce v aktuálnom lokálnom nastavení a vráti číslo označujúce ich poradie.
  11. Môžete triediť objekty podľa číselných vlastností pomocou rovnakej metódy?
  12. Áno, funkciu porovnávania môžete prispôsobiť tak, aby zvládla aj číselné porovnania.
  13. Ako vytlačíte triedené pole?
  14. Použite console.log() na vytlačenie zoradeného poľa do konzoly na overenie.
  15. Aký význam majú návratové hodnoty v porovnávacej funkcii?
  16. Určujú poradie prvkov: -1 pre menšie ako, 1 pre väčšie ako a 0 pre rovnaké.

Zbalenie triedenia objektov v JavaScripte

Triedenie poľa objektov podľa vlastnosti reťazca v JavaScripte možno efektívne dosiahnuť pomocou sort() metóda s vlastnou porovnávacou funkciou. Pákovým efektom localeCompare() a zaobchádzaním s rozlíšením malých a veľkých písmen, môžete zabezpečiť presné a zmysluplné triedenie údajov. Pochopenie týchto techník umožňuje lepšiu manipuláciu s údajmi a ich prezentáciu, čím sa ľahko prispôsobia zložitejším scenárom. Okrem toho triedenie podľa viacerých vlastností pridáva ďalšiu úroveň sofistikovanosti, vďaka čomu je triedený výstup relevantnejší a organizovanejší.