JavaScript: Sortering af en række objekter efter egenskabsværdi

JavaScript

Sortering af JavaScript-objekter efter strengegenskab

Sortering af arrays af objekter er en almindelig opgave i JavaScript, især når man arbejder med data, der skal vises i en bestemt rækkefølge. Et typisk scenarie involverer sortering af en række objekter efter en strengegenskabsværdi, såsom et efternavn eller en titel.

I denne artikel vil vi undersøge, hvordan man sorterer en række JavaScript-objekter efter værdien af ​​en strengegenskab. Vi vil undersøge brugen af ​​`sort()`-metoden og diskutere, om yderligere trin, som at tilføje en `toString()`-metode til objekterne, er nødvendige.

Kommando Beskrivelse
sort(function(a, b) {...}) Definerer en brugerdefineret sorteringsfunktion til at bestemme rækkefølgen af ​​array-elementerne baseret på specifikke kriterier.
localeCompare() Sammenligner to strenge i den aktuelle lokalitet, og returnerer et tal, der angiver, om en referencestreng kommer før eller efter eller er den samme som den givne streng.
console.log() Udsender information til konsollen, typisk til fejlretningsformål.

Detaljeret forklaring af JavaScript-objektsortering

De ovenfor angivne scripts er designet til at sortere en række JavaScript-objekter efter værdien af ​​en strengegenskab kaldet . I det første eksempel bruger vi metode, som giver os mulighed for at definere en brugerdefineret sorteringsfunktion. Denne funktion sammenligner egenskab for hver genstand. Hvis det første objekt er last_nom er mindre end det andet objekts , returnerer det -1, hvilket indikerer, at det første objekt skal komme før det andet. Hvis det første objekt er er større, returnerer den 1, hvilket betyder, at det første objekt skal komme efter det andet. Hvis de er ens, returnerer det 0, hvilket indikerer, at deres positioner skal forblive uændrede.

Det andet script bruger en mere kortfattet ES6-syntaks. Det metoden anvendes inden for funktion til at sammenligne objekternes egenskaber. Denne metode returnerer et tal, der angiver, om en streng kommer før, efter eller er den samme som en anden streng i den aktuelle lokalitet. Det console.log() funktion bruges i begge scripts til at udlæse det sorterede array til konsollen til verifikation. Begge metoder sorterer effektivt rækken af ​​objekter efter egenskab, der demonstrerer, hvordan man håndterer objektegenskabssortering i JavaScript.

Sortering af et array af objekter efter en strengegenskab i JavaScript

JavaScript på klientsiden

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

Sortering af et array af objekter efter en strengegenskab ved hjælp af ES6-syntaks

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

Sortering af et array af objekter efter en strengegenskab i JavaScript

JavaScript på klientsiden

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

Sortering af et array af objekter efter en strengegenskab ved hjælp af ES6-syntaks

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

Avancerede teknikker til at sortere objekter i JavaScript

Når du sorterer en række objekter efter en strengegenskab i JavaScript, er det vigtigt at forstå forviklingerne ved metode. Som standard er metode sorterer elementer som strenge. Dette kan føre til uventede resultater, når du har at gøre med tal eller specialtegn. For at sikre nøjagtig sortering, især med strengegenskaber, bør du bruge en brugerdefineret sammenligningsfunktion. I tillæg til , en anden nyttig teknik er at håndtere store og små bogstaver. JavaScripts strengsammenligning skelner som standard mellem store og små bogstaver, så 'a' vil blive betragtet som mindre end 'A'. For at undgå dette kan du konvertere alle strenge til enten små eller store bogstaver i din sammenligningsfunktion.

Et andet vigtigt aspekt at overveje er sortering efter flere egenskaber. For eksempel hvis to objekter har det samme værdi, vil du måske sortere dem yderligere efter . Dette kan opnås ved at udvide den brugerdefinerede sammenligningsfunktion til at omfatte yderligere betingelser. En sådan sortering på flere niveauer sikrer, at dataene er ordnet omfattende, hvilket giver mere meningsfulde resultater. Ved at forstå og anvende disse avancerede sorteringsteknikker kan du håndtere mere komplekse datasorteringsscenarier effektivt i JavaScript.

  1. Hvordan sorterer man et array af objekter efter en strengegenskab?
  2. Brug metode med en brugerdefineret sammenligningsfunktion, ved hjælp af til strengsammenligning.
  3. Er JavaScript-sortering skelet mellem store og små bogstaver?
  4. Ja, som standard. Konverter strenge til små eller store bogstaver i sammenligningsfunktionen for at undgå dette.
  5. Hvordan håndterer du sortering efter flere egenskaber?
  6. Udvid den tilpassede sammenligningsfunktion til at inkludere yderligere betingelser for sortering efter sekundære egenskaber.
  7. Skal du tilføje en metode til dine objekter til sortering?
  8. Nej, det er tilstrækkeligt at bruge en brugerdefineret sammenligningsfunktion.
  9. Hvad gør gøre?
  10. Den sammenligner to strenge i den aktuelle lokalitet og returnerer et tal, der angiver deres rækkefølge.
  11. Kan du sortere objekter efter numeriske egenskaber ved hjælp af samme metode?
  12. Ja, du kan tilpasse sammenligningsfunktionen til også at håndtere numeriske sammenligninger.
  13. Hvordan udlæser du det sorterede array?
  14. Brug for at udskrive det sorterede array til konsollen til verifikation.
  15. Hvad er betydningen af ​​returværdierne i sammenligningsfunktionen?
  16. De bestemmer rækkefølgen af ​​elementerne: -1 for mindre end, 1 for større end og 0 for lig.

Sortering af en række objekter efter en strengegenskab i JavaScript kan opnås effektivt ved hjælp af metode med en brugerdefineret sammenligningsfunktion. Ved at udnytte og håndtering af store og små bogstaver, kan du sikre nøjagtig og meningsfuld datasortering. Forståelse af disse teknikker giver mulighed for bedre manipulation og præsentation af data, hvilket med lethed kan tage højde for mere komplekse scenarier. Derudover tilføjer sortering efter flere egenskaber endnu et lag af sofistikering, hvilket gør det sorterede output mere relevant og organiseret.