Gå til innhold

Arrays

Du har allerede lært å lagre én verdi i en variabel:

name = "Ola"
var name = "Ola"
let name = "Ola";

Variabelen name er en etikett som peker på verdien "Ola". Men hva om du vil lagre flere navn? Kanskje en liste over alle elevene i en gruppe, alle svarene i en quiz, eller alle produktene i en handlekurv?

Da trenger du en array, dette er en organisert samling av verdier. Ofte blir det omtalt som en liste.

Bruk flertall i navnet

En array inneholder mange verdier, så navnet bør stå i flertall: elever, farger, priser – ikke elev, farge, pris. Da ser du med en gang at variabelen peker på en samling, ikke én enkelt verdi.

Les mer om gode variabelnavn

Hva er en array?

En array er en liste der hver verdi har en fast plass. Tenk på en garderobe med nummererte skap: hvert skap har et nummer, og i hvert skap ligger det én ting.

Slik lager du en array:

elever = ['Ola', 'Amina', 'Jonas', 'Lin']
var elever = ['Ola', 'Amina', 'Jonas', 'Lin']
let elever = ['Ola', 'Amina', 'Jonas', 'Lin'];

Hakeparentesene [ ] forteller at dette er en array (i Python kalt liste). Verdiene skilles med komma.

Nå peker variabelen elever på en samling med fire tekstverdier. I minnet ser det omtrent slik ut:

elever 'Ola' 'Amina' 'Jonas' 'Lin' 0 1 2 3

Indekser

Legg merke til tallene under: 0, 1, 2, 3. Disse kalles indekser, og de forteller deg hvor i arrayen hver verdi befinner seg.

Indekser starter på 0

Den første verdien har indeks 0, ikke 1. Dette er annerledes enn hvordan vi er vant med å telle, og det er noe som forvirrer mange i starten.

Men det er konsekvent i de fleste andre programmeringsspråk.

Indeks Verdi
0 'Ola'
1 'Amina'
2 'Jonas'
3 'Lin'

For å hente ut en bestemt verdi bruker du arrayens navn og indeksen i hakeparenteser:

elever = ['Ola', 'Amina', 'Jonas', 'Lin']

print(elever[0])   # Ola
print(elever[2])   # Jonas
var elever = ['Ola', 'Amina', 'Jonas', 'Lin']

print(elever[0])   # Ola
print(elever[2])   # Jonas
let elever = ['Ola', 'Amina', 'Jonas', 'Lin'];

console.log(elever[0]);   // Ola
console.log(elever[2]);   // Jonas

Les koden over nøye. Hva tror du koden skriver ut til terminalen?

Svar

elever[0] gir 'Ola', den første verdien, på indeks 0.

elever[2] gir 'Jonas', den tredje verdien, på indeks 2.

Hvor mange verdier er det?

Egenskapen .length (JavaScript) eller funksjonen len() (Python) forteller deg hvor mange verdier arrayen inneholder:

elever = ['Ola', 'Amina', 'Jonas', 'Lin']
print(len(elever))   # 4
var elever = ['Ola', 'Amina', 'Jonas', 'Lin']
print(elever.size())   # 4

I GDScript bruker du .size() på arrayen for å få antall verdier.

let elever = ['Ola', 'Amina', 'Jonas', 'Lin'];
console.log(elever.length);   // 4

Arrayen har 4 verdier, men den siste indeksen er 3. Det er alltid slik: siste indeks er length - 1. Denne forskjellen mellom antall og siste indeks er viktig å huske.

Array length versus last index Array length versus last index

Hva skjer hvis du prøver en indeks som ikke finnes?

Noen ganger kan du ende opp å prøve å hente noe som ikke finnes, i eksempelet nedenfor prøver vi å hente noe fra index 4, som ikke finnes. Da gir programmet beskjed om at dette ikke virker.

print(elever[4])   # IndexError!

I Python gir dette en feilmelding.

>>> print(elever[4])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
print(elever[4])   # Feil!

Også GDScript stopper med en feilmelding hvis du prøver en indeks som er utenfor arrayen.

ERROR: Out of bounds get index '4' (on base: 'Array')
console.log(elever[4]);   // undefined

JavaScript gir undefined, du kan tolke det som «her er det ingenting.»

> console.log(elever[4]);
undefined

Endre en verdi

Du kan endre en verdi ved å skrive til en bestemt indeks, akkurat som når du flytter en etikett til en ny verdi:

farger = ['rød', 'grønn', 'blå']
farger[1] = 'gul'
print(farger)   # ['rød', 'gul', 'blå']
var farger = ['rød', 'grønn', 'blå']
farger[1] = 'gul'
print(farger)   # ['rød', 'gul', 'blå']
let farger = ['rød', 'grønn', 'blå'];
farger[1] = 'gul';
console.log(farger);   // ['rød', 'gul', 'blå']

Nå peker indeks 1 på 'gul' i stedet for 'grønn'. Arrayen er den samme. Det er innholdet på plass 1 som er byttet ut.