javascript syntaks arrays terminaler variabler. Konverter til en ekte matrise

I JavaScript, så vel som i andre programmeringsspråk, brukes forskjellige metoder for å arbeide med arrays.

Metoder forenkler konstruksjonen av logikk og dens implementering i et skript.

Nedenfor er grunnleggende metoder for arbeid med arrays i JS.

trykk

Push()-metoden legger til en verdi på slutten av matrisen.

La arr = ; arr.push(312); console.log(arr); // →

pop

Pop()-metoden fjerner siste element fra en matrise eller returnerer verdien.

La arr = ; arr.pop(); console.log(arr); // →

Ved å bruke muligheten til å få verdien av det siste elementet i en matrise som et eksempel, kan vi få bildeformatet:

La img = "https://example.com/img/navn.png"; la format = img.split(".").pop(); console.log(format); // → png console.log(img.split(".")); // → ["https://eksempel", "com/img/navn", "png"]

unshift

unshift metode() legger til et element i begynnelsen av matrisen.

La arr = ; arr.unshift(312); console.log(arr); // →

skifte

Shift()-metoden fjerner det første elementet fra matrisen.

La arr = ; arr.shift(); console.log(arr); // → ;

Du må forstå at når du bruker shift- og unshift-metodene, endrer hvert element i matrisen sin indeks. Dette kan redusere programkjøringen hvis matrisen er stor. dele

Split()-metoden brukes til å transformere en streng til en matrise. Split deler en streng i henhold til den angitte parameteren.

La str = "Anya, Masha, Sasha, Dasha"; // dette er en streng la arr = str.split(", "); console.log(arr); // → ["Anya", "Masha", "Sasha", "Dasha"] er en matrise

bli med

join()-metoden kombinerer matriseelementer til en streng ved å bruke skilletegnet som er spesifisert i parameteren.

La arr = ["Notpad++", "Sublime", "VSCode"]; // dette er en matrise la str = arr.join(", "); console.log("Redaktører for kode: " + str); // → "Redaktører for kode: Notpad++, Sublime, VSCode"

skive

Slice()-metoden oppretter en ny matrise der den kopierer elementer fra kilden, fra elementet med indeksen til den første parameteren sendt til metoden, til elementet med indeksen til den andre parameteren.

For eksempel: slice(3, 7) vil returnere elementer med indeksene 3, 4, 5, 6. Elementet med indeks 7 vil ikke bli inkludert i matrisen.

Hvis en parameter med en negativ verdi sendes til slice(), returnerer den en ny matrise med antallet elementer spesifisert i parameteren, men allerede tatt fra slutten av den opprinnelige matrisen.

Slicemetoden endrer ikke den opprinnelige matrisen.

Her er noen eksempler på slice()-metoden i aksjon:

La arr = ["A", "B", "C", "D", "E", "F", "G"]; // Returnerer en matrise som inneholder elementer med indekser fra 2 til 5 console.log(arr.slice(2, 5)); // → ["C", "D", "E"] // Returnerer en ny matrise som inneholder elementer med indekser fra 3 til arr.length console.log(arr.slice(3)); // → ["D", "E", "F", "G"] // Returnerer en kopi av den originale matrisen console.log(arr.slice()); // → ["A", "B", "C", "D", "E", "F", "G"] // Returnerer en ny matrise som består av de tre siste elementene i den originale console.log (arr.skive (-3)); // → ["E", "F", "G"]

skjøte

Metoden splice() modifiserer innholdet i en matrise ved å fjerne eksisterende elementer og/eller legge til nye.

Syntaks:

Array.splice(start, deleteCount[, item1[, item2[, ...]]])

Alternativer:

  • start - Indeksen for å begynne å endre matrisen. Hvis den er større enn lengden på matrisen, vil den reelle indeksen settes til lengden på matrisen. Hvis negativ, spesifiserer indeksen til elementet fra slutten.
  • deleteCount - Et heltall som indikerer antall gamle elementer som skal slettes fra matrisen. Hvis deleteCount er 0, slettes ingen elementer. I dette tilfellet må du spesifisere minst én nytt element. Hvis deleteCount mer mengde elementer som gjenstår i matrisen fra startindeksen, så slettes alle elementer til slutten av matrisen.
  • itemN - Valgfrie parametere. Elementer som skal legges til matrisen. Hvis du ikke spesifiserer noe element, vil splice() ganske enkelt fjerne elementer fra matrisen.
Returverdi Beskrivelse

Hvis antallet elementer som er spesifisert for å settes inn er forskjellig fra antallet elementer som skal fjernes, vil matrisen endre lengde etter anropet.

La arr = ["Barca", "Shakhtar", "Manchester United", "Milan", "Real", "Ajax", "Juventus"]; la nax = arr.splice(2, 3); arr.splice(2, 3); console.log(nax); // → ["Manchester United", "Milan", "Ekte"] console.log(arr); // → ["Barca", "Shakhtar"] arr.splice(1, 0, "Zenit", "CSKA", "Spartak"); console.log(arr); // → [Barça, Zenit, CSKA, Spartak, Shakhtar]

omvendt

Reverse()-metoden reverserer rekkefølgen til matriseelementene. Som et resultat blir det første elementet i matrisen det siste, og det siste elementet blir det første.

La arr = ; console.log(arr.reverse()); // → console.log(["Alice", "BG", "GO", "DDT"].reverce()); // → ["DDT", "GO", "BG", "Alice"]

kart

Map()-metoden går gjennom elementene i matrisen, utfører spesifiserte handlinger på dem, og returnerer en kopi av matrisen med de endrede elementene.

I eksemplet nedenfor legger vi til hvert array-element indeksverdien til dette elementet (7 + 0, 2 + 1, 15 + 2, 4 + 3, 31 + 4):

La arr = ; la testMap = arr.map((element, indeks) => element + indeks); console.log(testMap); //

eller multipliser hver verdi av matrisen, for eksempel med 12

La arr = ; la testMap = arr.map(a => a * 12); console.log(testMap); // →

filter

Filter()-metoden brukes til å filtrere matriser. Den itererer gjennom matrisen, og returnerer bare de elementene som passerer en gitt betingelse.

La oss for eksempel filtrere verdiene til en rekke tall, slik at bare de som er større enn 21

La arr = ; la testFilter = arr.filter(element => element > 21); console.log(testFilter); // →

Vær oppmerksom på at 21 ikke ble inkludert i matriseresultatet, siden betingelsen skulle returnere noe som er større enn 21. For at 21 skal inkluderes i matrisen setter vi betingelsen som større enn eller lik: element >= 21

redusere

Reducer()-metoden går sekvensielt gjennom elementene i matrisen, og akkumulerer mellomresultatet i henhold til funksjonen spesifisert i tilstanden til funksjonen. I sluttresultatet returnerer den bare én verdi.

Denne metoden brukes ofte for å finne summen av alle tallene i en matrise. Eksempel:

La arr = ; la summa = arr.reduce((acc, element) => acc + element); console.log(sum); // → 370

sortere

Sort()-metoden brukes til å sortere array-elementer i henhold til spesifiserte parametere.

Eksempel – la oss ta en rekke tall og sortere dem i stigende rekkefølge:

La arr = ; la testSortArr = arr.sort((a, b) => a - b); console.log(testSortArr); // →

inkluderer

Inclusive()-metoden bestemmer om matrisen inneholder spesifikt element, returnerer sant eller usant avhengig av dette.

Eksempel på bruk av include() .

Her er et logisk uttrykk:

La dyr = "hund"; if (dyr == "katt" || dyr == "hund" || dyr == "løve" || dyr == "hest") ( // ........ )

Ved å bruke inkluderer metoden kan du skrive det slik:

La dyr = "hund"; const animals = ["katt", "hund", "løve", "hest"]; if (dyr.inkluderer(dyr)) ( // ........... )

Matriser

En matrise er en ordnet samling av verdier. Verdiene i en matrise kalles elementer, og hvert element er preget av en numerisk posisjon i matrisen, kalt en indeks. Arrays i JavaScript er utype: matriseelementer kan være av hvilken som helst type, og forskjellige elementer Den samme matrisen kan ha forskjellige typer. Matriseelementer kan til og med være objekter eller andre matriser, slik at du kan lage komplekse strukturer data, for eksempel arrays av objekter og arrays av arrays.

JavaScript-matriseindekser starter på null og bruker 32-bits heltall – det første elementet i matrisen har indeks 0. JavaScript-matriser er dynamiske: de kan vokse og krympe i størrelse etter behov; det er ikke nødvendig å deklarere faste matrisestørrelser når de opprettes, eller å tildele minne på nytt når størrelsene deres endres.

Arrays i JavaScript er en spesialisert form for objekter, og array-indekser betyr lite mer enn bare egenskapsnavn, som tilfeldigvis er heltall.

Opprette matriser

Den enkleste måten å lage en matrise på er å bruke en bokstavelig, som er en enkel kommadelt liste over matriseelementer omgitt av firkantede parenteser. Verdiene i en matriseliteral trenger ikke å være konstanter - de kan være alle uttrykk, inkludert objektliteraler:

Var tom = ; // Tom array var tall = ; // Matrise med fem numeriske elementer var misc = [ 1.1, true, "a", ]; // 3 elementer forskjellige typer+ etterfølgende komma var base = 1024; var tabell = ; // Matrise med variabler var arrObj = [, ]; // 2 arrays inne som inneholder objekter

Array literal syntaks lar deg sette inn et valgfritt etterfølgende komma, dvs. den bokstavelige [,] samsvarer med en matrise med to elementer, ikke tre.

En annen måte å lage en matrise på er å kalle Array()-konstruktøren. Du kan kalle konstruktøren på tre forskjellige måter:

    Kall konstruktøren uten argumenter:

    Var arr = new Array();

    I dette tilfellet vil det bli opprettet en tom matrise, tilsvarende det bokstavelige.

    Ring konstruktøren med et enkelt numerisk argument som spesifiserer lengden på matrisen:

    Var arr = ny Array(10);

    I dette tilfellet vil en tom matrise med den angitte lengden bli opprettet. Denne formen for å kalle Array()-konstruktøren kan brukes til å forhåndstildele minne for en matrise hvis antallet elementer er kjent på forhånd. Merk at dette ikke lagrer noen verdier i matrisen.

    Spesifiser eksplisitt verdiene til de to eller flere matriseelementene eller ett ikke-numerisk element i konstruktørkallet:

    Var arr = new Array(5, 4, 3, 2, 1, "test");

    I dette tilfellet blir argumentene til konstruktøren verdiene til elementene i den nye matrisen. Å bruke array-literals er nesten alltid enklere enn å bruke Array()-konstruktøren.

Lese og skrive matriseelementer

Array-elementer åpnes ved å bruke operatøren. Til venstre for parentesene må det være en matrisereferanse. Inne i parentesen må det være et vilkårlig uttrykk som returnerer en ikke-negativ heltallsverdi. Denne syntaksen er nyttig for både å lese og skrive verdien til et matriseelement. Derfor er alle følgende JavaScript-instruksjoner gyldige:

// Lag en matrise med ett element var arr = ["verden"]; // Les element 0 var verdi = arr; // Skriv verdien til element 1 arr = 3,14; // Skriv verdien til element 2 i = 2; arr[i] = 3; // Skriv verdien til element 3 arr = "hei"; // Les element 0 og 2, skriv verdien til element 3 arr] = arr;

La meg minne deg på at matriser er en spesialisert type objekt. Firkantede parenteser, som brukes for å få tilgang til array-elementer, fungerer nøyaktig det samme som firkantede parenteser, brukes for å få tilgang til objektegenskaper. JavaScript-tolken konverterer de numeriske indeksene i parentes til strenger - indeks 1 blir strengen "1" - og bruker deretter strengene som egenskapsnavn.

Det er ikke noe spesielt med å konvertere numeriske indekser til strenger: du kan gjøre det samme med vanlige objekter:

Var obj = (); // Lag et enkelt objekt obj = "en"; // Indekser det med heltall

Saken med arrays er at når du bruker egenskapsnavn som er ikke-negative heltall, bestemmer arrays automatisk verdien av length-egenskapen. For eksempel, ovenfor opprettet vi en array arr med et enkelt element. Den tildelte deretter verdier til elementene i indeksene 1, 2 og 3. Som et resultat av disse operasjonene endret verdien til arrayens lengdeegenskap til 4.

Du bør tydelig skille indekser i en matrise fra objektegenskapsnavn. Alle indekser er egenskapsnavn, men bare egenskaper med navn representert med heltall er indekser. Alle matriser er objekter, og du kan legge til egenskaper til dem med hvilket som helst navn. Hvis du imidlertid trykker på egenskaper som er matriseindekser, reagerer matriser ved å oppdatere verdien til lengdeegenskapen etter behov.

Vær oppmerksom på at negative og ikke-heltall kan brukes som matriseindekser. I dette tilfellet konverteres tall til strenger, som brukes som egenskapsnavn.

Legge til og fjerne matriseelementer

Vi har allerede sett at den enkleste måten å legge til elementer i en matrise på er å tilordne verdier til nye indekser. Du kan også bruke push()-metoden for å legge til ett eller flere elementer på slutten av en matrise:

Var arr = ; // Lag en tom matrise arr.push("null"); // Legg til en verdi på slutten arr.push("one",2); // Legg til ytterligere to verdier

Du kan også legge til et element på slutten av matrisen ved å tilordne en verdi til arr-elementet. Unshift()-metoden kan brukes til å sette inn et element i begynnelsen av en matrise, som flytter eksisterende elementer i matrisen til høyere indeksposisjoner.

Du kan slette matriseelementer ved å bruke delete-operatoren, akkurat som vanlige objektegenskaper:

Var arr = ; slette arr; 2 i arr; // false, indeks 2 i matrisen er ikke definert arr.length; // 3: delete-operatoren endrer ikke lengdeegenskapen til matrisen

Å fjerne et element ligner (men litt annerledes) som å tildele verdien udefinert til det elementet. Legg merke til at bruk av delete-operatoren på et array-element ikke endrer verdien til length-egenskapen eller flytter ned elementer med høyere indekser for å fylle tomrommet ved å slette elementet.

Det er også mulig å fjerne elementer på slutten av en matrise ved ganske enkelt å tilordne en ny verdi til length-egenskapen. Matriser har en pop()-metode (det motsatte av push()), som reduserer lengden på matrisen med 1 og returnerer verdien til det fjernede elementet. Det er også en shift()-metode (det motsatte av unshift()), som fjerner elementet i begynnelsen av matrisen. I motsetning til delete-operatoren, flytter shift()-metoden alle elementer ned til en posisjon under deres gjeldende indeks.

Til slutt er det en flerbruks spleise()-metode som lar deg sette inn, fjerne og erstatte elementer av arrays. Den endrer verdien på lengdeegenskapen og skifter matriseelementer til lavere eller høyere indekser etter behov. Vi vil se på alle disse metodene litt senere.

Flerdimensjonale arrays

JavaScript støtter ikke "ekte" flerdimensjonale arrays, men lar deg simulere dem godt ved å bruke arrays av arrays. For å få tilgang til et dataelement i en rekke matriser, bruk bare operatoren to ganger.

Anta for eksempel at den variable matrisen er en rekke matriser med tall. Hvert element i matrise[x] er en rekke tall. For å få tilgang til et spesifikt tall i en matrise kan du bruke uttrykksmatrisen[x][y]. Nedenfor er spesifikt eksempel, Hvor todimensjonal matrise brukt som multiplikasjonstabell:

// Lag en flerdimensjonal array var table = new Array(10); // Det er 10 rader i tabellen for(var i = 0; i

Metoder i Array-klassen

ECMAScript 3-standarden definerer Array.prototype som et sett praktiske funksjoner for arbeid med matriser, som er tilgjengelige som metoder for en hvilken som helst matrise. Disse metodene vil bli presentert i de følgende underavsnittene.

join() metode

Metoden Array.join() konverterer alle matriseelementer til strenger, kobler dem sammen og returnerer den resulterende strengen. Som et valgfritt argument kan du sende en streng til metoden som skal brukes til å skille elementene i resultatstrengen. Hvis en avgrensningsstreng ikke er spesifisert, brukes et komma. For eksempel resulterer følgende fragment i strengen "1,2,3":

Var arr = ; arr.join(); // "1,2,3" arr.join("-"); // "1-2-3"

reverse() metode

Metoden Array.reverse() reverserer rekkefølgen på elementene i en matrise og returnerer en omorganisert matrise. Permutasjonen utføres direkte i den originale matrisen, dvs. Denne metoden oppretter ikke en ny matrise med de omorganiserte elementene, men omorganiserer dem i en allerede eksisterende matrise. Følgende kodebit, ved bruk av metodene reverse() og join(), resulterer for eksempel i strengen "3,2,1":

Var arr = ; arr.reverse().join(); // "3,2,1"

sort() metode

Metoden Array.sort() sorterer elementene i kildematrisen og returnerer den sorterte matrisen. Hvis sort()-metoden kalles uten argumenter, gjøres sorteringen i alfabetisk rekkefølge (elementer konverteres midlertidig til strenger for sammenligning om nødvendig). Udefinerte elementer flyttes til slutten av matrisen.

For å sortere i annen rekkefølge enn alfabetisk, til sorteringsmetoden() kan du sende sammenligningsfunksjonen som et argument. Denne funksjonen angir hvilke av de to argumentene som skal komme først i den sorterte listen. Hvis det første argumentet må komme før det andre, må sammenligningsfunksjonen returnere et negativt tall. Hvis det første argumentet skal følge det andre i en sortert matrise, må funksjonen returnere et tall større enn null. Og hvis to verdier er likeverdige (det vil si at rekkefølgen deres spiller ingen rolle), skal sammenligningsfunksjonen returnere 0:

Var arr = ; arr.sort(); // alfabetet rekkefølge: 1111, 222, 33, 4 arr.sort(function(a,b) ( // Numerisk rekkefølge: 4, 33, 222, 1111 returner a-b; // Returnerer 0 // avhengig av sorteringsrekkefølgen til a og b ) ); // Sorter i motsatt retning, fra største til minste arr.sort(function(a,b) (retur b-a));

Legg merke til hvor praktisk det er å bruke en ikke navngitt funksjon i denne kodebiten. Sammenligningsfunksjonen brukes kun her, så det er ikke nødvendig å gi den et navn.

concat()-metoden

Array.concat()-metoden oppretter og returnerer en ny matrise som inneholder elementene i den opprinnelige matrisen som concat() ble kalt og verdiene til eventuelle argumenter som ble sendt til concat(). Hvis noen av disse argumentene i seg selv er en matrise, legges elementene til den returnerte matrisen. Det skal imidlertid bemerkes at det ikke er noen rekursiv transformasjon av en matrise av matriser til en endimensjonal matrise. Concat()-metoden endrer ikke den opprinnelige matrisen. Nedenfor er noen eksempler:

Var arr = ; arr.concat(4, 5); // Returner arr.concat(); // Return arr.concat(,) // Return arr.concat(4, ]) // Return ]

slice()-metoden

Metoden Array.slice() returnerer en del, eller undermatrise, av den angitte matrisen. De to metodeargumentene spesifiserer starten og slutten av det returnerte fragmentet. Den returnerte matrisen inneholder elementet hvis nummer er spesifisert i det første argumentet, pluss alle påfølgende elementer, opp til (men ikke inkludert) elementet hvis nummer er spesifisert i det andre argumentet.

Hvis bare ett argument er gitt, inneholder den returnerte matrisen alle elementene fra startposisjonen til slutten av matrisen. Hvis noen av argumentene er negative, bestemmer det elementnummeret i forhold til slutten av matrisen. Så argument -1 tilsvarer det siste elementet i matrisen, og argument -3 tilsvarer det tredje elementet i matrisen fra slutten. Her er noen eksempler:

Var arr = ; arr.slice(0,3); // Returner arr.slice(3); // Returner arr.slice(1,-1); // Returner arr.slice(-3,-2); // Komme tilbake

spleise() metode

Metoden Array.splice() er universell metode, som setter inn eller fjerner elementer fra en matrise. I motsetning til slice()- og concat()-metodene, modifiserer splice()-metoden den opprinnelige matrisen den ble kalt opp på. Merk at metodene splice() og slice() har svært like navn, men utfører helt forskjellige operasjoner.

Metoden splice() kan fjerne elementer fra en matrise, sette inn nye elementer eller gjøre begge deler samtidig. Matriseelementer forskyves etter behov for å lage en kontinuerlig sekvens etter innsetting eller sletting.

Det første argumentet til spleise()-metoden spesifiserer posisjonen i matrisen som innsetting og/eller sletting skal utføres fra. Det andre argumentet spesifiserer antall elementer som skal fjernes (klippes) fra matrisen. Hvis det andre argumentet utelates, fjernes alle matriseelementer fra det spesifiserte til slutten av matrisen. Metoden splice() returnerer en matrise med de fjernede elementene eller (hvis ingen elementer ble fjernet) en tom matrise.

De to første argumentene til splice()-metoden spesifiserer array-elementene som skal fjernes. Disse argumentene kan følges av et hvilket som helst antall tilleggsargumenter som spesifiserer elementene som skal settes inn i matrisen, og starter på posisjonen spesifisert i det første argumentet.

Var arr = ; arr.splice(4); // Return , arr = arr.splice(1,2); // Return , arr = arr.splice(1,1); // Komme tilbake ; arr = arr = ; arr.splice(2,0,"a","b"); // Komme tilbake ; arr =

push() og pop() metoder

Push()- og pop()-metodene lar deg jobbe med arrays som om de var stabler. Push()-metoden legger til ett eller flere nye elementer på slutten av matrisen og returnerer dens nye lengde. Pop()-metoden utfører den omvendte operasjonen - den fjerner det siste elementet i matrisen, reduserer lengden på matrisen og returnerer verdien den fjernet. Merk at begge disse metodene endrer den originale matrisen i stedet for å lage en modifisert kopi av den.

unshift() og shift() metoder

Metodene unshift() og shift() oppfører seg nesten på samme måte som push() og pop(), bortsett fra at de setter inn og fjerner elementer i begynnelsen av matrisen i stedet for på slutten. Unshift()-metoden flytter eksisterende elementer til større indekser for å frigjøre plass, legger til elementet eller elementene i begynnelsen av matrisen, og returnerer den nye lengden på matrisen. Shift()-metoden fjerner og returnerer det første elementet i matrisen, og flytter alle påfølgende elementer ned én posisjon for å ta opp plassen som ble frigjort i begynnelsen av matrisen.

  • Oversettelse

De fleste applikasjoner som utvikles i disse dager krever interaksjon med en slags datasett. Håndtering av elementer i samlinger er en vanlig operasjon som du sannsynligvis har vært borti. Når du for eksempel jobber med matriser, kan du uten å tenke over bruke en vanlig for-løkke, som ser omtrent slik ut: for (var i=0; i< value.length; i++){} . Однако, лучше, всё-таки, смотреть на вещи шире.

Anta at vi må vise en liste over produkter, og om nødvendig dele den inn i kategorier, filtrere den, utføre et søk på den, endre denne listen eller dens elementer. Kanskje du raskt må utføre noen beregninger som involverer elementene i en liste. La oss si at du må legge til noe med noe, multiplisere noe med noe. Er det mulig å finne verktøy i JavaScript som lar deg løse slike problemer raskere og mer praktisk enn å bruke en vanlig for loop?

Faktisk er det slike fasiliteter i JavaScript. Noen av dem er diskutert i materialet, oversettelsen som vi presenterer for din oppmerksomhet i dag. Spesielt snakker vi om spredningsoperatoren, for...of loop, og include(), some(), every(), filter(), map() og reduce() metodene. Vi snakker for det meste om arrays her, men teknikkene som diskuteres her er generelt egnet for arbeid med andre typer objekter.

Det skal bemerkes at anmeldelser av moderne tilnærminger til JS-utvikling vanligvis inkluderer eksempler utarbeidet ved hjelp av pilfunksjoner. Kanskje du ikke bruker dem så ofte – kanskje fordi du ikke liker dem, kanskje fordi du ikke vil bruke for mye tid på å lære noe nytt, eller kanskje de rett og slett ikke er riktige for deg. Derfor, her, i de fleste situasjoner, vil to alternativer for å utføre de samme handlingene vises: bruk normale funksjoner(ES5) og bruk av pilfunksjoner (ES6). For de som er nye til å jobbe med pilfunksjoner, er ikke pilfunksjoner det samme som funksjonserklæringer og funksjonsuttrykk. Du bør ikke erstatte det ene med det andre. Spesielt skyldes dette at i ordinær og pilfunksjoner nøkkelord dette oppfører seg annerledes.

1. Spread-operator Spread-operatoren lar deg "utvide" matriser ved å erstatte deres elementer i stedet for matriser på stedet der denne operatoren brukes. En lignende tilnærming har blitt foreslått for objektliteraler.▍Styrker av spredningsoperatøren
  • Det er enkelt og rask måte"trekk ut" de individuelle elementene fra en matrise.
  • Denne operatøren er egnet for arbeid med array- og objektliteral.
  • Dette er en rask og intuitiv metode for å jobbe med funksjonsargumenter.
  • Utvidelsesoperatøren tar ikke mye plass i koden - den ser ut som tre prikker (...).
▍Eksempel Anta at du står overfor oppgaven med å vise en liste over favorittgodbitene dine uten å bruke en løkke. Ved å bruke utvidelsesoperatoren gjøres dette slik:

2. For…of-sløyfen For…of-operatoren er designet for å krysse gjentakbare objekter. Det gir tilgang til individuelle elementer slike objekter (spesielt til array-elementer), som for eksempel lar dem modifiseres. Det kan betraktes som en erstatning for det vanlige for løkke.▍Styrker til for...of-løkken
  • Dette er en enkel måte å legge til eller oppdatere samlingsobjekter på.
  • For...of-løkken lar deg utføre ulike beregninger ved hjelp av elementer (summering, multiplikasjon og så videre).
  • Den er praktisk å bruke når du trenger å sjekke eventuelle forhold.
  • Bruken fører til å skrive renere og mer lesbar kode.
▍Eksempel La oss si at du har en datastruktur som beskriver innholdet i en verktøykasse, og du vil vise disse verktøyene. Slik gjør du det med en for...of-løkke:

3. Inclusive()-metoden include()-metoden brukes til å kontrollere tilstedeværelsen av et bestemt element i samlingen, spesielt f.eks. spesifikk linje i en matrise som inneholder strenger. Denne metoden returnerer sant eller usant avhengig av resultatene av testen. Når du bruker det, er det verdt å tenke på at det skiller mellom store og små bokstaver. Hvis for eksempel samlingen inneholder strengelementet SCHOOL , og include() sjekker om det er tilstede på strengskolen , vil metoden returnere false .▍Styrker av include()-metoden
  • Inclusive()-metoden er nyttig for å lage enkle datainnhentingsmekanismer.
  • Det gir utvikleren en intuitiv måte å bestemme tilstedeværelsen av visse data i en matrise.
  • Den er praktisk å bruke i betingede uttrykkå modifisere, filtrere elementer og utføre andre operasjoner.
  • Bruken av den fører til forbedret kodelesbarhet.
▍Eksempel Anta at du har en garasje, representert av en matrise med en liste over biler, og du ikke vet om en bestemt bil er i denne garasjen eller ikke. For å løse dette problemet må du skrive kode som lar deg sjekke om en bil står i garasjen. La oss bruke inkluderer()-metoden:

4. Some()-metoden Some()-metoden lar deg sjekke om noen av elementene du leter etter finnes i matrisen. Basert på resultatene av kontrollen, returnerer den sann eller usann. Den ligner på include()-metoden ovenfor, bortsett fra at argumentet er en funksjon i stedet for for eksempel en vanlig streng. Styrkene til some()-metoden
  • Some()-metoden lar oss sjekke om matrisen inneholder minst ett av elementene vi er interessert i.
  • Den utfører en tilstandstest ved å bruke funksjonen som er sendt til den.
  • Denne metoden er praktisk å bruke.
▍Eksempel Anta at du er eier av en klubb, og generelt sett er du ikke interessert i hvem som kommer til klubben din. Noen besøkende får imidlertid ikke komme inn i klubben, da de er utsatt for overdreven inntak av alkoholholdige drikkevarer, iht. i det minste, i tilfelle de befinner seg i ditt etablissement på egen hånd, og det er ingen med dem som kan passe på dem. I i dette tilfellet en gruppe besøkende kan bare komme inn i klubben hvis minst en av dem er minst 18 år. For å automatisere denne typen sjekk, bruker vi metoden some(). Nedenfor er applikasjonen demonstrert i to versjoner.ES5

ES6

5. Every()-metoden every()-metoden går gjennom matrisen og sjekker hvert element for samsvar med en bestemt betingelse, og returnerer true hvis alle elementene i matrisen oppfyller betingelsen, og ellers usann. Du kan se at den ligner på some()-metoden.▍Styrken til every()-metoden
  • Every()-metoden lar deg sjekke om alle elementene i en matrise oppfyller en betingelse.
  • Betingelser kan settes ved hjelp av funksjoner.
  • Det fremmer en deklarativ tilnærming til programmering.
▍Eksempel La oss gå tilbake til forrige eksempel. Der slapp du besøkende under 18 år inn i klubben, men noen skrev en uttalelse til politiet, hvorpå du kom i en ubehagelig situasjon. Etter at alt var ordnet, bestemte du deg for at du ikke trengte alt dette og strammet inn reglene for å besøke klubben. Nå kan en gruppe besøkende kun komme inn i klubben hvis hvert medlem av gruppen er minst 18 år. Som forrige gang vil vi vurdere å løse problemet i to versjoner, men denne gangen vil vi bruke every()-metoden.ES5

ES6

6. Filter()-metoden Filter()-metoden lar deg lage, basert på en bestemt matrise, en ny matrise som kun inneholder de elementene i den opprinnelige matrisen som tilfredsstiller en gitt betingelse ▍Styrker av filter()-metoden
  • Filter()-metoden unngår modifikasjon av den opprinnelige matrisen.
  • Det lar deg bli kvitt unødvendige elementer.
  • Det forbedrer kodelesbarheten.
▍Eksempel Anta at du må velge fra en liste over priser bare de som er større enn eller lik 30. La oss bruke filter()-metoden .ES5 for å løse dette problemet

ES6

7. Map()-metoden map()-metoden ligner filter()-metoden ved at den også returnerer en ny matrise. Den brukes imidlertid til å modifisere elementene i den originale matrisen.▍Styrken til map()-metoden
  • Map()-metoden unngår behovet for å endre elementene i den opprinnelige matrisen.
  • Den kan brukes til å enkelt endre array-elementer.
  • Det forbedrer kodelesbarheten.
▍Eksempel La oss si at du har en liste over produkter med priser. Din leder trenger ny liste varer hvis priser er redusert med 25 %. La oss bruke map() .ES5-metoden for å løse dette problemet

ES6

8. Reducer()-metoden Reducer()-metoden, i sin enkleste form, lar deg summere elementene i numeriske arrays. Med andre ord reduserer den matrisen til en enkelt verdi. Dette lar deg bruke den til å utføre ulike beregninger.▍Styrker ved reduce()-metoden
  • Ved å bruke reduce()-metoden kan du beregne summen eller gjennomsnittet av elementene i en matrise.
  • Denne metoden øker hastigheten og forenkler beregningene.
▍Eksempel Anta at du må beregne utgiftene dine for uken, som er lagret i en matrise. La oss løse dette problemet ved å bruke reduce()-metoden .ES5

ES6

Legg til merkelapper
  • Oversettelse
  • I. Iterering over ekte matriser
  • for hver metode og relaterte metoder
  • for løkke
  • Riktig bruk for ... i loop
  • for...of loop (implisitt bruk av iterator)
  • Eksplisitt bruk av iterator
  • Bruke metoder for å iterere over ekte matriser
  • Konverter til en ekte matrise
  • Et notat om kjøretidsobjekter
I. Oppregning av reelle matriser På dette øyeblikket Det er tre måter å iterere over elementene i en ekte matrise:
  • metode Array.prototype.forEach ;
  • klassisk for loop
  • en "riktig" konstruert for...in loop.
  • I tillegg, snart, med bruken av den nye ECMAScript 6 (ES 6) standarden, forventes ytterligere to metoder:
  • for...of loop (implisitt bruk av iterator);
  • eksplisitt bruk av iterator.
  • 1. ForEach-metoden og relaterte metoder Hvis prosjektet ditt er designet for å støtte funksjonene til ECMAScript 5 (ES5)-standarden, kan du bruke en av innovasjonene deres - forEach-metoden.

    Eksempel på bruk:
    var a = ["a", "b", "c"]; a.forEach(function(entry) ( console.log(entry); ));
    Generelt krever bruk av forEach å koble til es5-shim-emuleringsbiblioteket for nettlesere som ikke støtter denne metoden. Disse inkluderer IE 8 og nyere tidlige versjoner, som fortsatt er i bruk her og der.

    Fordelen med forEach er at det ikke er nødvendig å deklarere lokale variabler for å lagre indeksen og verdien til det gjeldende matriseelementet, siden de automatisk sendes til funksjonen Ring tilbake(tilbakeringing) som argumenter.

    Hvis du er bekymret for de mulige kostnadene ved å ringe tilbake på hvert element, ikke bekymre deg og les dette.

    ForEach er designet for å iterere over alle elementene i en matrise, men i tillegg til det tilbyr ES5 flere nyttige metoder for å iterere gjennom alle eller noen elementer pluss å utføre noen handlinger på dem:

    • every-returner true hvis for hvert element i matrisen tilbakeringingen returnerer en verdi som kan konverteres til true.
    • noen - returnerer sann hvis for minst ett element i matrisen tilbakeringingen returnerer en verdi som kan konverteres til sann.
    • filter – oppretter en ny matrise som inkluderer de elementene i den opprinnelige matrisen som tilbakeringingen returnerer sann for.
    • kart - oppretter en ny matrise bestående av verdiene som returneres av tilbakeringingen.
    • reduser - reduserer en matrise til en enkelt verdi, og bruker en tilbakeringing til hvert matriseelement etter tur, og starter med det første (kan være nyttig for å beregne summen av matriseelementer og andre oppsummeringsfunksjoner).
    • reduceRight - fungerer på samme måte som redusere, men itererer gjennom elementer i omvendt rekkefølge.
    2. For loop God gammel for regler:

    Var a = ["a", "b", "c"]; var indeks; for (indeks = 0; indeks< a.length; ++index) { console.log(a); }
    Hvis lengden på arrayet er konstant gjennom hele sløyfen, og selve løkken tilhører en ytelseskritisk del av koden (noe som er usannsynlig), kan du bruke den "mer optimale" versjon for med å lagre lengden på matrisen:

    Var a = ["a", "b", "c"]; var indeks, len; for (indeks = 0, len = a.lengde; indeks< len; ++index) { console.log(a); }
    I teorien skal denne koden kjøre litt raskere enn den forrige.

    Hvis rekkefølgen på elementene ikke er viktig, kan du gå enda lenger når det gjelder optimalisering og bli kvitt variabelen for lagring av lengden på matrisen, endre rekkefølgen på søket til motsatt:

    Var a = ["a", "b", "c"]; var indeks; for (indeks = a.length - 1; indeks >= 0; --index) ( console.log(a); )
    Imidlertid, i moderne motorer JavaScript-optimaliseringsspill som disse betyr vanligvis ingenting.

    3. Riktig bruk av en for...in-løkke Hvis du anbefales å bruke en for...in-løkke, husk at iterasjon over matriser ikke er det den er ment for. I motsetning til en vanlig misforståelse, itererer ikke for...in-løkken over array-indekser, men snarere gjennom tallrike egenskaper til et objekt.

    Men i noen tilfeller, for eksempel å iterere over sparsomme matriser, kan for...in være nyttig, så lenge du tar forholdsregler, som vist i eksemplet nedenfor:

    // a - sparsom array var a = ; a = "a"; a = "b"; a = "c"; for (var nøkkel i a) ( if (a.hasOwnProperty(nøkkel) && /^0$|^\d*$/.test(nøkkel) && nøkkel