Les 6: Arrays
Home โ€บJavaScript-track โ€บLes 6

๐Ÿ“š Arrays

โฑ Geschatte leestijd: 25 minuten ยท 7 stappen

In de vorige les leerde je functies schrijven. Nu ga je met arrays werken: geordende lijsten van waarden. Arrays zijn onmisbaar in JavaScript โ€” bijna elke applicatie werkt met lijsten van data.

1 Aanmaken en indexeren

Wat is een array?

Een array is een geordende lijst van waarden tussen vierkante haken [], gescheiden door komma's. De index begint bij 0. Met .length weet je hoeveel elementen er in zitten.

Array aanmaken en lezen
const kleuren = ['rood', 'groen', 'blauw'];

console.log(kleuren[0]);  // rood   (eerste element)
console.log(kleuren[1]);  // groen
console.log(kleuren[2]);  // blauw
console.log(kleuren[3]);  // undefined (bestaat niet)

console.log(kleuren.length); // 3

// Laatste element ophalen
console.log(kleuren[kleuren.length - 1]); // blauw

// Arrays mogen gemengde typen bevatten
const gemengd = [42, 'tekst', true, null];

2 push, pop, shift en unshift

Met vier methoden voeg je elementen toe of verwijder je ze aan het begin of einde van een array.

Toevoegen en verwijderen
const fruit = ['appel', 'banaan'];

// Einde
fruit.push('kers');       // voeg toe aan einde
console.log(fruit);       // ['appel', 'banaan', 'kers']

const laatste = fruit.pop(); // verwijder van einde
console.log(laatste);     // kers
console.log(fruit);       // ['appel', 'banaan']

// Begin
fruit.unshift('aardbei'); // voeg toe aan begin
console.log(fruit);       // ['aardbei', 'appel', 'banaan']

const eerste = fruit.shift(); // verwijder van begin
console.log(eerste);      // aardbei
console.log(fruit);       // ['appel', 'banaan']

๐Ÿ’ก Onthoud: push/pop werken aan het einde, unshift/shift werken aan het begin. push en unshift voegen toe, pop en shift verwijderen en geven het element terug.

3 forEach โ€” itereren

Wat doet forEach?

.forEach() roept een callback-functie aan voor elk element. Je krijgt het element, de index en de array zelf als parameters. forEach geeft undefined terug โ€” het is puur voor bijeffecten (zoals loggen of DOM-aanpassingen).

forEach
const steden = ['Amsterdam', 'Rotterdam', 'Utrecht'];

steden.forEach(function(stad) {
  console.log(stad);
});
// Amsterdam
// Rotterdam
// Utrecht

// Met arrow function en index
steden.forEach((stad, index) => {
  console.log(index + ': ' + stad);
});
// 0: Amsterdam
// 1: Rotterdam
// 2: Utrecht

4 map โ€” transformeren

Wat doet map?

.map() maakt een nieuwe array door elk element te transformeren via een callback. De originele array blijft ongewijzigd. Gebruik map altijd als je een nieuwe lijst wilt op basis van een bestaande.

map
const getallen = [1, 2, 3, 4, 5];

// Verdubbel elk getal
const verdubbeld = getallen.map(n => n * 2);
console.log(verdubbeld); // [2, 4, 6, 8, 10]
console.log(getallen);   // [1, 2, 3, 4, 5] โ€” origineel ongewijzigd

// Strings naar hoofdletters
const namen = ['sara', 'daan', 'lena'];
const hoofdletters = namen.map(n => n.toUpperCase());
console.log(hoofdletters); // ['SARA', 'DAAN', 'LENA']

// Prijzen met 21% BTW
const prijzen = [10, 25, 8];
const metBtw = prijzen.map(p => Math.round(p * 1.21 * 100) / 100);
console.log(metBtw); // [12.1, 30.25, 9.68]

5 filter, includes en indexOf

Wat doet filter?

.filter() maakt een nieuwe array met alleen de elementen waarvoor de callback true teruggeeft. .includes() checkt of een waarde in de array zit. .indexOf() geeft de index terug (of -1 als niet gevonden).

filter, includes, indexOf
const scores = [45, 72, 38, 91, 55, 88];

// Alleen voldoendes (>= 55)
const voldoendes = scores.filter(s => s >= 55);
console.log(voldoendes); // [72, 91, 55, 88]

// Alleen even getallen
const even = scores.filter(s => s % 2 === 0);
console.log(even); // [72, 38, 88]

// includes โ€” zit het er in?
console.log(scores.includes(91)); // true
console.log(scores.includes(99)); // false

// indexOf โ€” op welke positie?
console.log(scores.indexOf(72));  // 1
console.log(scores.indexOf(99));  // -1

6 Oefening 1: filter en map

Opdracht:

Maak de array getallen = [3, 7, 12, 5, 18, 2, 9]. Gebruik .filter() om de getallen groter dan 8 te selecteren. Gebruik .map() om alle getallen te verdubbelen. Log beide resultaten.

โœ“ Gebruik .filter() voor getallen > 8

โœ“ Gebruik .map() om te verdubbelen

โœ“ Log beide nieuwe arrays

editor
Console output

7 Eindopdracht: Fruitlijst

Combineer alles:

Maak een array met 5 fruitnamen. Voeg een 6e toe met push. Verwijder het eerste element met shift. Log de array. Gebruik forEach om elk fruit met zijn indexnummer te loggen. Filter de vruchten waarvan de naam langer is dan 5 tekens.

โœ“ push aanwezig

โœ“ shift aanwezig

โœ“ forEach aanwezig

โœ“ filter aanwezig

editor
Console output
๐Ÿ“„ Volledig voorbeeld: arrays.js
// Array aanmaken en indexeren
const talen = ['HTML', 'CSS', 'JavaScript'];
console.log(talen[0]);        // HTML
console.log(talen.length);    // 3

// push, pop, shift, unshift
talen.push('PHP');
console.log(talen);           // ['HTML', 'CSS', 'JavaScript', 'PHP']
talen.shift();
console.log(talen);           // ['CSS', 'JavaScript', 'PHP']

// forEach
talen.forEach((taal, i) => {
  console.log(i + ': ' + taal);
});

// map โ€” nieuwe array
const getallen = [1, 2, 3, 4, 5];
const kwadraten = getallen.map(n => n * n);
console.log(kwadraten); // [1, 4, 9, 16, 25]

// filter โ€” nieuwe array
const groot = getallen.filter(n => n > 3);
console.log(groot); // [4, 5]

// includes en indexOf
console.log(talen.includes('CSS'));   // true
console.log(talen.indexOf('PHP'));    // 2