JavaScript: objektide massiivi sortimine atribuudi väärtuse järgi

JavaScript: objektide massiivi sortimine atribuudi väärtuse järgi
JavaScript

JavaScripti objektide sortimine stringi atribuudi järgi

Objektide massiivide sortimine on JavaScriptis tavaline ülesanne, eriti kui töötate andmetega, mida tuleb kuvada kindlas järjekorras. Üks tüüpiline stsenaarium hõlmab objektide massiivi sortimist stringi atribuudi väärtuse, näiteks perekonnanime või pealkirja järgi.

Selles artiklis uurime, kuidas sortida JavaScripti objektide massiivi stringi atribuudi väärtuse järgi. Uurime meetodi „sort()” kasutamist ja arutame, kas on vaja täiendavaid samme, näiteks meetodi „toString()” lisamine objektidele.

Käsk Kirjeldus
sort(function(a, b) {...}) Määrab kohandatud sortimisfunktsiooni massiivi elementide järjekorra määramiseks konkreetsete kriteeriumide alusel.
localeCompare() Võrdleb kahte stringi praeguses lokaadis, tagastades numbri, mis näitab, kas viitestring on antud stringi ees või järel või on see sama.
console.log() Väljastab teabe konsooli, tavaliselt silumise eesmärgil.

JavaScripti objektide sortimise üksikasjalik selgitus

Ülaltoodud skriptid on loodud JavaScripti objektide massiivi sorteerimiseks stringi atribuudi väärtuse järgi last_nom. Esimeses näites kasutame sort(function(a, b) {...}) meetod, mis võimaldab meil määratleda kohandatud sortimisfunktsiooni. See funktsioon võrdleb last_nom iga objekti omadus. Kui esimene objekt on last_nom on väiksem kui teise objekti oma last_nom, tagastab see -1, mis näitab, et esimene objekt peaks tulema enne teist. Kui esimene objekt on last_nom on suurem, tagastab see 1, mis tähendab, et esimene objekt peaks tulema pärast teist. Kui need on võrdsed, tagastab see 0, mis näitab, et nende positsioonid peaksid jääma muutumatuks.

Teine skript kasutab kokkuvõtlikumat ES6 süntaksit. The localeCompare() meetodit kasutatakse sort() funktsioon võrrelda last_nom objektide omadused. See meetod tagastab numbri, mis näitab, kas string on enne, pärast või on sama, mis praeguses lokaadis on mõni muu string. The console.log() funktsiooni kasutatakse mõlemas skriptis sorteeritud massiivi väljastamiseks konsooli kontrollimiseks. Mõlemad meetodid sorteerivad tõhusalt objektide massiivi last_nom atribuut, mis näitab, kuidas käsitleda objekti omaduste sorteerimist JavaScriptis.

Objektide massiivi sortimine stringi atribuudi järgi JavaScriptis

Kliendipoolne JavaScript

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

Objektide massiivi sortimine stringi atribuudi järgi ES6 süntaksi abil

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

Objektide massiivi sortimine stringi atribuudi järgi JavaScriptis

Kliendipoolne JavaScript

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

Objektide massiivi sortimine stringi atribuudi järgi ES6 süntaksi abil

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

Täiustatud tehnikad objektide sortimiseks JavaScriptis

Objektide massiivi sortimisel JavaScriptis stringi atribuudi järgi on oluline mõista selle keerukust. sort() meetod. Vaikimisi on sort() meetod sorteerib elemendid stringidena. See võib numbrite või erimärkidega tegelemisel kaasa tuua ootamatuid tulemusi. Täpse sortimise tagamiseks, eriti stringi omaduste puhul, peaksite kasutama kohandatud võrdlemise funktsiooni. Lisaks localeCompare(), on veel üks kasulik tehnika tõstutundlikkuse käsitlemine. JavaScripti stringide võrdlus on vaikimisi tõstutundlik, seega loetakse „a” väiksemaks kui „A”. Selle vältimiseks saate oma võrdlusfunktsioonis kõik stringid kas väike- või suurtähtedeks teisendada.

Teine oluline aspekt, mida tuleb arvestada, on sorteerimine mitme atribuudi järgi. Näiteks kui kahel objektil on sama last_nom väärtuse järgi, võiksite neid veelgi sortida first_nom. Seda saab saavutada kohandatud võrdlemise funktsiooni laiendamisega, et see hõlmaks lisatingimusi. Selline mitmetasandiline sorteerimine tagab andmete tervikliku järjestamise, pakkudes sisukamaid tulemusi. Nende täiustatud sortimistehnikate mõistmisel ja rakendamisel saate JavaScriptis tõhusalt käsitleda keerukamaid andmete sortimise stsenaariume.

Levinud küsimused JavaScripti objektide sortimise kohta

  1. Kuidas sorteerida objektide massiivi stringi omaduse järgi?
  2. Kasuta sort() meetod kohandatud võrdlusfunktsiooniga, kasutades localeCompare() stringide võrdlemiseks.
  3. Kas JavaScripti sortimine on tõstutundlik?
  4. Jah, vaikimisi. Selle vältimiseks teisendage stringid võrdlusfunktsioonis väike- või suurtähtedeks.
  5. Kuidas käsitlete sorteerimist mitme atribuudi alusel?
  6. Laiendage kohandatud võrdlemise funktsiooni, et lisada lisatingimused sekundaarsete omaduste järgi sortimiseks.
  7. Kas peate lisama a toString() meetod oma objektide sorteerimiseks?
  8. Ei, piisab kohandatud võrdlusfunktsiooni kasutamisest.
  9. Mis teeb localeCompare() teha?
  10. See võrdleb kahte stringi praeguses lokaadis ja tagastab numbri, mis näitab nende järjekorda.
  11. Kas saate sama meetodit kasutades objekte arvuliste omaduste järgi sortida?
  12. Jah, saate kohandada võrdlusfunktsiooni, et käsitleda ka arvulisi võrdlusi.
  13. Kuidas sorteeritud massiivi väljastada?
  14. Kasutage console.log() sorteeritud massiivi printimiseks konsooli kontrollimiseks.
  15. Mis tähtsus on võrdlusfunktsioonis tagastatavatel väärtustel?
  16. Need määravad elementide järjekorra: -1 on väiksem kui, 1 suurem kui ja 0 võrdseks.

Objektide sortimise lõpetamine JavaScriptis

Objektide massiivi sortimine JavaScriptis stringi atribuudi järgi saab tõhusalt saavutada, kasutades sort() kohandatud võrdlusfunktsiooniga meetod. Võimendades localeCompare() ja tõstutundlikkust käsitledes saate tagada täpse ja sisuka andmete sortimise. Nende tehnikate mõistmine võimaldab andmetega paremini manipuleerida ja esitleda, rahuldades hõlpsalt keerukamaid stsenaariume. Lisaks lisab mitme atribuudi järgi sortimine veel ühe kihi keerukust, muutes sorteeritud väljundi asjakohasemaks ja organiseeritumaks.