JavaScript: Sortera en array av objekt efter egenskapsvärde

JavaScript

Sortera JavaScript-objekt efter strängegenskap

Att sortera arrayer av objekt är en vanlig uppgift i JavaScript, särskilt när man arbetar med data som måste visas i en specifik ordning. Ett typiskt scenario involverar sortering av en array av objekt efter ett strängegenskapsvärde, till exempel ett efternamn eller en titel.

I den här artikeln kommer vi att undersöka hur man sorterar en array av JavaScript-objekt efter värdet på en strängegenskap. Vi kommer att undersöka användningen av `sort()`-metoden och diskutera om ytterligare steg, som att lägga till en `toString()`-metod till objekten, är nödvändiga.

Kommando Beskrivning
sort(function(a, b) {...}) Definierar en anpassad sorteringsfunktion för att bestämma ordningen på arrayelementen baserat på specifika kriterier.
localeCompare() Jämför två strängar i det aktuella språket och returnerar ett nummer som anger om en referenssträng kommer före eller efter eller är samma som den givna strängen.
console.log() Matar ut information till konsolen, vanligtvis för felsökningsändamål.

Detaljerad förklaring av JavaScript-objektsortering

Skripten som tillhandahålls ovan är utformade för att sortera en array av JavaScript-objekt efter värdet på en strängegenskap som kallas . I det första exemplet använder vi metod, som låter oss definiera en anpassad sorteringsfunktion. Denna funktion jämför egenskapen för varje objekt. Om det första objektet är last_nom är mindre än det andra objektets , returnerar den -1, vilket indikerar att det första objektet ska komma före det andra. Om det första objektet är är större, returnerar den 1, vilket betyder att det första objektet ska komma efter det andra. Om de är lika, returnerar det 0, vilket indikerar att deras positioner bör förbli oförändrade.

Det andra skriptet använder en mer kortfattad ES6-syntax. De metoden används inom funktion för att jämföra objektens egenskaper. Denna metod returnerar ett tal som anger om en sträng kommer före, efter eller är samma som en annan sträng i den aktuella lokalen. De console.log() funktionen används i båda skripten för att mata ut den sorterade arrayen till konsolen för verifiering. Båda metoderna sorterar effektivt arrayen av objekt efter egenskap, som visar hur man hanterar objektegenskapssortering i JavaScript.

Sortera en array av objekt efter en strängegenskap i JavaScript

JavaScript på klientsidan

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

Sortera en array av objekt efter en strängegenskap med ES6-syntax

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

Sortera en array av objekt efter en strängegenskap i JavaScript

JavaScript på klientsidan

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

Sortera en array av objekt efter en strängegenskap med ES6-syntax

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

Avancerade tekniker för att sortera objekt i JavaScript

När du sorterar en array av objekt efter en strängegenskap i JavaScript är det viktigt att förstå krångligheterna i metod. Som standard är metoden sorterar element som strängar. Detta kan leda till oväntade resultat vid hantering av siffror eller specialtecken. För att säkerställa korrekt sortering, särskilt med strängegenskaper, bör du använda en anpassad jämförelsefunktion. Dessutom , en annan användbar teknik är att hantera skiftlägeskänslighet. JavaScripts strängjämförelse är som standard skiftlägeskänslig, så "a" anses vara mindre än "A". För att undvika detta kan du konvertera alla strängar till antingen gemener eller versaler i din jämförelsefunktion.

En annan viktig aspekt att tänka på är sortering efter flera egenskaper. Till exempel om två objekt har samma värde kanske du vill sortera dem ytterligare efter . Detta kan uppnås genom att utöka den anpassade jämförelsefunktionen till att omfatta ytterligare villkor. Sådan sortering på flera nivåer säkerställer att informationen ordnas heltäckande, vilket ger mer meningsfulla resultat. Genom att förstå och tillämpa dessa avancerade sorteringstekniker kan du hantera mer komplexa datasorteringsscenarier effektivt i JavaScript.

  1. Hur sorterar man en array av objekt efter en strängegenskap?
  2. Använd metod med en anpassad jämförelsefunktion, som använder för strängjämförelse.
  3. Är JavaScript-sortering skiftlägeskänslig?
  4. Ja, som standard. Konvertera strängar till gemener eller versaler i jämförelsefunktionen för att undvika detta.
  5. Hur hanterar du sortering efter flera egenskaper?
  6. Utöka den anpassade jämförelsefunktionen till att inkludera ytterligare villkor för sortering efter sekundära egenskaper.
  7. Behöver du lägga till en metod för att dina objekt för sortering?
  8. Nej, det räcker med att använda en anpassad jämförelsefunktion.
  9. Vad gör do?
  10. Den jämför två strängar i den aktuella lokalen och returnerar ett nummer som anger deras ordning.
  11. Kan du sortera objekt efter numeriska egenskaper med samma metod?
  12. Ja, du kan anpassa jämförelsefunktionen för att hantera numeriska jämförelser också.
  13. Hur matar du ut den sorterade arrayen?
  14. Använda sig av för att skriva ut den sorterade arrayen till konsolen för verifiering.
  15. Vilken betydelse har returvärdena i jämförelsefunktionen?
  16. De bestämmer ordningen på elementen: -1 för mindre än, 1 för större än och 0 för lika.

Att sortera en array av objekt efter en strängegenskap i JavaScript kan uppnås effektivt med hjälp av metod med en anpassad jämförelsefunktion. Genom att utnyttja och hantera skiftlägeskänslighet kan du säkerställa korrekt och meningsfull datasortering. Att förstå dessa tekniker möjliggör bättre manipulation och presentation av data, vilket med lätthet tillgodoser mer komplexa scenarier. Dessutom ger sortering efter flera egenskaper ytterligare ett sofistikerat lager, vilket gör den sorterade utmatningen mer relevant och organiserad.