ES6-metoder
ES6, som er den korte form for ECMAScript 6, er den version af JavaScript, der blev udgivet i juni 2015. Det lader til, at de udviklere, der vedligeholder JavaScript, kan lide min fødselsmåned, for det er den måned, hvor de fleste af deres versioner blev udgivet.
Hvis du lige er ved at lære JavaScript, vil ES6 gøre livet meget lettere for dig. Det giver ikke kun arraymetoder, men også ting som destrukturering, pilefunktioner, en bedre måde at skrive objektorienteret og modulær kode på, blandt andre ting.
De fleste af disse ES6-arraymetoder tager en callback-funktion, og som følge heraf kaldes de arraymetoder af højere orden. Pilfunktioner er meget almindelige i higher-order-funktioner, da det forenkler vores kode
Map-metoden
Hvis der er en ES6-arraymetode, som du vil bruge næsten hele tiden, så er det denne metode. Det er min bedste array-metode både i JavaScript og Python. Selv om nogle JavaScript-udviklere har forsøgt at implementere map
før ES6, blev standardmetoden map
indført i JavaScript i ES6. I kodestumpen nedenfor har jeg implementeret map
på tre måder:
- Ved hjælp af almindelige JavaScript-funktioner: Her har jeg givet to argumenter til funktionen, først
item
, som er det element, jeg ønsker at gøre noget ved, og et valgfrit argument,index
, som er indekset for hvert element - Ved hjælp af pilefunktioner: Jeg har også overgivet to argumenter ligesom i det første eksempel, men callback-funktionen her er en pilefunktion, hvilket gør koden meget pænere.
- Jeg brugte også pilefunktioner, men jeg overgav kun ét argument – det element, som jeg vil iterere på. Dette er nyttigt, hvis jeg ikke har brug for indekset.
Filtermetoden
Metoden filter
er en anden arraymetode af højere orden, som du bør bruge i dag. Det, som filter
gør, er enkelt. Givet et array af elementer ønsker vi at returnere et nyt array fra det oprindelige array, hvor en bestemt betingelse er true
. Callback-funktionen skal returnere et boolean, og det element, der opfylder betingelsen, er det, der skal være i det nye array.
The reduce method
Dette er meget flot, og jeg synes, det er den sværeste af alle de metoder, jeg har nævnt indtil nu. Det, som denne metode gør, er at bruge en bestemt callback til at reducere arrayet. Hvis jeg f.eks. ønsker at finde summen af alle elementerne i et array eller produktet af alle elementerne i et array, er denne metode en fin metode at bruge i stedet for at løbe i en sløjfe og øge den oprindelige sum eller det oprindelige produkt.
The forEach-metoden
Denne metode svarer til map
-metoden, men i dette tilfælde returnerer den ikke et nyt array. Det er mere af den almindelige for
-sløjfe i JavaScript, men på en renere og mere avanceret måde. Den tager tre parametre, som du måske har vidst. Det første er elementet i arrayet, det andet er elementets indeks (som er valgfrit), og det tredje er det arrayobjekt, som det aktuelle element tilhører.
I kodestumpen nedenfor har jeg brugt forEach
til at manipulere Document Object Model (DOM), hvilket er ret sejt. Jeg kan opdatere arrayet, og de listeelementer, der gengives i DOM, ændres automatisk.
Metoden concat
Der er tilfælde, hvor du ønsker at sammenføje eller flette to eller flere arrays sammen. Så vil denne funktion være meget praktisk. Hvis du kalder concat
på to arrays, får du et nyt array, der består af de to arrays kombineret.
De every- og some-metoder
Disse metoder er nyttige, hvis du vil vide, om alle elementerne i et array opfylder en betingelse, og om nogle af elementerne i et array opfylder en betingelse, henholdsvis.
Andre metoder omfatter:
Metoden fill
Fylder hvert element i arrayet med en værdi, der er overgivet som en parameter: .fill(1)
// .
Metoden entries
Denne får arrayet til at opføre sig som et objekt med et nøgle-værdipar, hvor nøglen er indekset, og værdien er elementet.
Metoden find
Denne metode returnerer det første element i et array, der opfylder en test. Den tager en callback-funktion, som returnerer en boolean.
Den splejsemetode
Denne metode tager et uendeligt antal parametre – de to første er henholdsvis det indeks, hvor du ønsker at begynde at indsætte og fjerne elementer, og antallet af elementer, du ønsker at fjerne – og de resterende parametre er de elementer, du ønsker at tilføje til arrayet. Den returnerer et array med de elementer, der er fjernet, og muterer arrayet.
Den omvendte metode
Den omvendte metode vender arrayet om. Bemærk, at den muterer det, hvilket betyder, at den ændrer arrayet i stedet for blot at oprette en kopi af det.
Den sammenføjningsmetode
Denne metode forvandler et array til et array til en streng. Bemærk, at den ikke muterer arrayet – den opretter blot en kopi af det. Det omvendte af denne metode er split
-metoden, som forvandler en streng til et array. Den tager en streng som parameter, som er det, der vil blive brugt til at sammenføje hvert element i arrayet.
Den flade metode
Metoden flat
er en ny metode, der blev tilføjet i ES11 (ES11 blev oprettet i juni i år). Denne metode flatterer et array.
Lad os sige, at vi har et array, der indeholder et array, og vi ønsker at finde summen og produktet af hvert element i arrays inde i arrayet. Det, jeg mener, er, at hvis jeg har et array, som er defineret ved , ]
, skal summen være 10
, og produktet skal være 24
.
En måde at gøre det på, er ved at løbe gennem det oprindelige array og løbe gennem hvert element og få summen og produktet.
Med ES6 kan jeg løbe gennem det oprindelige array og bruge reduce
-metoden til at få summen og produktet for hvert element i hovedarrayet – og bruge det til at få den samlede sum og det samlede produkt. Men med arrayet flat
kan jeg flade hovedarrayet og dermed returnere et enkelt array, der kun indeholder tal, og jeg kan bruge metoden reduce
på det.
Metoden flatMap
Dette er en kombination af flat
og map
. Den mapper hvert element i arrayet til en given callback-funktion og flatterer derefter det resulterende array.
Lad os sige, at vi gerne vil have kvadratet på hvert element i et array, der ikke er flattet, og vi vil gerne flatte det. Denne metode vil gøre livet lettere for os. I den del, hvor jeg brugte flatMap
-metoden i kodestumpen nedenfor, tager den et element, der er et array, og jeg returnerede et nyt array, som er kvadratet på elementerne. Og til sidst flader den det resulterende array ud.