Gå til innhold

Array-metoder

Du vet nå hva en array er, hvordan indekser fungerer, og hvordan du endrer en verdi på en bestemt plass. Men hva om du vil legge til nye verdier, fjerne verdier, eller plukke ut bare de verdiene du trenger?

Da bruker du metoder, funksjoner som hører til arrayen.

Legge til med push()

.push() legger til en eller flere verdier på slutten av arrayen. Arrayen vokser.

let tall = [1, 2, 3];
tall.push(4);
console.log(tall);          // [1, 2, 3, 4]
console.log(tall.length);   // 4
tall = [1, 2, 3]
tall.append(4)
print(tall)        # [1, 2, 3, 4]
print(len(tall))   # 4

append i Python

I Python heter metoden .append(), ikke .push(). Den gjør det samme: legger til én verdi på slutten.

Du kan også legge til flere verdier på én gang:

tall.push(5, 6);
console.log(tall);   // [1, 2, 3, 4, 5, 6]
tall.extend([5, 6])
print(tall)   # [1, 2, 3, 4, 5, 6]

Fjerne med pop()

.pop() fjerner den siste verdien i arrayen. Men den gjør også noe annet: den returnerer verdien som ble fjernet.

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

Selv om du ikke tar vare på returverdien, returnerer .pop() den likevel. Verdien bare kastes.

push og pop endrer arrayen

Både .push() og .pop() endrer den originale arrayen. Den vokser eller krymper. Det lages ingen kopi.


Filtrere arrays med filter()

Noen ganger trenger du ikke hele arrayen, bare de verdiene som oppfyller en bestemt betingelse. Da bruker du .filter().

.filter() går gjennom hvert element, sjekker det mot en betingelse, og returnerer en ny array med bare de elementene som bestod.

let tall = [3, 8, 1, 12, 5, 9];
let store = tall.filter(t => t > 6);
console.log(store);   // [8, 12, 9]
console.log(tall);    // [3, 8, 1, 12, 5, 9]  (uendret!)
tall = [3, 8, 1, 12, 5, 9]
store = [t for t in tall if t > 6]
print(store)   # [8, 12, 9]
print(tall)    # [3, 8, 1, 12, 5, 9]  (uendret!)

Legg merke til at tall ikke endres. .filter() lager en helt ny array. Originalen er trygg.

List comprehension i Python

Python har ikke en .filter()-metode på lister slik JavaScript har. I stedet bruker vi list comprehension: [x for x in liste if betingelse]. Det er den vanlige måten å filtrere på i Python.

Lese filter-uttrykket

let store = tall.filter(t => t > 6);

Steg for steg:

  1. tall.filter(...) gå gjennom hvert element i tall
  2. t => t > 6 for hvert element t, sjekk: er t større enn 6?
  3. Hvis ja → ta med i den nye arrayen
  4. Hvis nei → hopp over

Forskjellen: endre vs. lage ny

Det er viktig å forstå forskjellen mellom metoder som endrer arrayen og metoder som lager en ny array:

Metode Hva den gjør Endrer originalen?
.push() / .append() Legger til på slutten Ja
.pop() Fjerner siste element Ja
.filter() Plukker ut elementer Nei, lager ny

Denne forskjellen blir viktigere jo mer komplisert koden din blir. Når du bruker .filter(), vet du at originaldataene alltid er trygge.