Et array er en bestilt liste over verdier som vanligvis er opprettet med det formål å løpe gjennom numerisk indekserte verdier, begynner med indeksen null. Det du trenger å vite er at arrays er numerisk bestilte sett, i motsetning til objekter som har eiendomsnavn knyttet til verdier i ikke-numerisk rekkefølge. I hovedsak bruker arrays tall som en oppslagstast, mens objekter har brukerdefinerte eiendomsnavn. JavaScript har ingen ekte associative arrays, men objekter kan brukes til å oppnå funksjonaliteten til assosiative arrayer.
I den følgende prøven lagrer jeg fire strenger i myArray
som jeg kan få tilgang til ved hjelp av en numerisk indeks. Jeg sammenligner og kontrasterer myArray
til et objekt bokstavelig etterligne en assosiativ array.
Eksempel: prøve133.html
Arrays kan holde noen type verdier, og disse verdiene kan oppdateres eller slettes når som helst.
Hvis du trenger en hash (aka associative array), er en gjenstand nærmeste løsning.
en Array ()
er bare en spesiell type Gjenstand()
. Det er, Array ()
forekomster er i utgangspunktet Gjenstand()
forekomster med et par ekstra funksjoner (.lengde
og en innebygd numerisk indeks).
Verdier som finnes i en array kalles ofte elementer.
Array ()
parametereDu kan overføre verdiene til en array-forekomst til konstruktøren som kommaseparerte parametere (Ny Array ('foo', 'bar');
). De Array ()
Konstruktøren kan ta opptil 4 294 967 295 parametere.
Men hvis bare én parameter sendes til Array ()
konstruktør og verdien er et heltall ('1', '123' eller '1,0'), vil det bli brukt til å sette opp lengde
av arrayet, og vil ikke bli brukt som en verdi inneholdt i arrayet.
Eksempel: sample134.html
Array ()
Egenskaper og metoderDe Array ()
objektet har følgende egenskaper (ikke inkludert arvede egenskaper og metoder):
Eiendommer (Array.prototype
):
prototype
Array-objektinstanser har følgende egenskaper og metoder (ikke inkludert arvelige egenskaper og metoder):
Instansegenskaper (var myArray = ['foo', 'bar']; myArray.length;
):
konstruktør
lengde
Instansmetoder (var myArray = ['foo']; myArray.pop ();
):
pop ()
trykk()
omvendt()
skifte()
sortere()
spleise ()
avskifte ()
concat ()
bli med()
skjære()
Som de fleste objektene i JavaScript, kan en arrayobjekt opprettes ved hjelp av ny
operatør i forbindelse med Array ()
konstruktør, eller ved å bruke bokstavelig syntaks.
I følgende eksempel lager jeg myArray1
array med forhåndsdefinerte verdier ved hjelp av Array ()
konstruktør, og da myArray2
bruker bokstavelig notasjon.
Eksempel: sample135.html
Det er mer vanlig å se en matrise definert ved hjelp av bokstavelig syntaks, men det bør bemerkes at denne snarveien bare skjuler bruken av Array ()
konstruktør.
I praksis er array-bokstavelig typisk alt du noensinne vil trenge.
Uansett hvordan en matrise er definert, vil du fremdeles ikke opprette noen forhåndsdefinerte verdier i arrayet, men vil ikke inneholde noen verdier.
En verdi kan legges til en rekkefølge på en hvilken som helst indeks, når som helst. I prøven som følger, legger vi til en verdi i den numeriske indeksen 50 av en tom matrise. Hva med alle indeksene før 50? Vel, som sagt, kan du til enhver tid legge til en verdi på en matrise på en hvilken som helst indeks. Men hvis du legger til en verdi for den numeriske indeksen 50 av en tom matrise, vil JavaScript fylle ut alle nødvendige indekser før den med udefinert
verdier.
Eksempel: sample136.html
I tillegg, vurderer JavaScript-dynamikkens natur og det faktum at JavaScript ikke er sterkt skrevet, kan en array-verdi til enhver tid oppdateres, og verdien i indeksen kan være noen juridisk verdi. I den følgende prøven endrer jeg verdien ved den numeriske indeksen 50 til en gjenstand.
Eksempel: prøve137.html
En matrise begynner å indeksere verdier til null. Dette betyr at den første numeriske sporet for å holde en verdi i en matrise ser ut myArray [0]
. Dette kan være litt forvirrende Hvis jeg lager en matrise med en enkelt verdi, er indeksen for verdien 0 mens lengden på arrayet er 1. Pass på at du forstår at lengden på en matrise representerer antall verdier som finnes i matrisen , mens den numeriske indeksen for arrayet starter ved null.
I den følgende prøven er strengverdien blå
finnes i myArray
array ved den numeriske indeksen 0, men siden arrayet inneholder en verdi, er lengden på arrayet 1.
Eksempel: sample138.html
lengde
Som nevnt tidligere, ved å sende et enkelt heltallsparameter til Array ()
konstruktør, er det mulig å forhåndsdefinere arrayslengden, eller antall verdier det vil inneholde. I dette tilfellet gjør konstruktøren et unntak og antar at du vil angi lengden på arrayet og ikke pre-populere arrayet med verdier.
I den neste prøven setter vi opp myArray
array med en forhåndsdefinert lengde på 3. Igjen konfigurerer vi lengden på arrayet, ikke overfører den en verdi som skal lagres på 0-indeksen.
Eksempel: sample139.html
Gir en forhåndsdefinert lengde
vil gi hver numerisk indeks, opp til den angitte lengden, en tilknyttet verdi på udefinert
.
Du lurer kanskje på om det er mulig å lage en forhåndsdefinert gruppe som bare inneholder en numerisk verdi. Ja, det er ved å bruke bokstavelig form var myArray = [4]
.
De lengde
Egenskapen til et arrayobjekt kan brukes til å få eller angi lengden på en matrise. Som vist tidligere, vil innstillingen av lengden som er større enn det faktiske antall verdier som finnes i arrayet, legges til udefinert
verdier til matrisen. Det du kanskje ikke forventer er at du faktisk kan fjerne verdier fra en matrise ved å sette lengdeverdien til et tall mindre enn antall verdier som finnes i matrisen.
Eksempel: sample140.html
Ettersom et array kan holde en gyldig JavaScript-verdi, kan en matrise inneholde andre arrayer. Når dette er gjort, regnes arrayen som inneholder innkapslede arrays som et flerdimensjonalt array. Tilgang til innkapslede arrays er gjort ved hjelp av brakettkjetting. I den følgende prøven oppretter vi en matrise som inneholder en matrise, der vi lager en annen bokstavlig bokstav, inne i hvilken vi lager en annen bokstavs bokstav, som inneholder en strengverdi ved 0-indeksen.
Eksempel: sample141.html
Dette kodeeksemplet er ganske dumt, men du får ideen om at arrayer kan inneholde andre arrayer, og du kan få tilgang til innkapslede arrays på ubestemt tid.
Den enkleste og uten tvil den raskeste måten å løse over en matrise er å bruke mensløkken.
I den følgende koden løp vi fra begynnelsen av indeksen til slutten.
Eksempel: sample142.html
Og nå løp vi fra slutten av indeksen til begynnelsen.
Eksempel: sample143.html
Nå, hvis du lurer på hvorfor jeg ikke viser for løkker her, er det fordi mens sløyfer har færre bevegelige deler, og jeg tror de er lettere å lese.
Og det fullfører denne artikkelen på arrays.