1. JavaScript Destructuring

Destructuring assignments in JavaScript laten je toe om elementen uit arrays of eigenschappen uit objecten eenvoudig toe te wijzen aan variabelen. De rest en spread operators zijn aanvullingen hierop die werken met de rest van de elementen of eigenschappen.

1.1 JavaScript Destructuring arrays

Dit hoofdstuk gaat specifiek over het destructuren van arrays. Hier worden voorbeelden gegeven.

Voorbeeld: Basis Array Destructuring

const cijfers = [10, 20, 30];
 
const [eerste, tweede, derde] = cijfers;
 
console.log(eerste); // 10
console.log(tweede); // 20
console.log(derde);  // 30
 

Overslaan van Elementen

const cijfers = [10, 20, 30];
 
const [eerste, , derde] = cijfers;
 
console.log(eerste); // 10
console.log(derde);  // 30
 

Default Waarden

const cijfers = [10];
 
const [eerste, tweede = 50] = cijfers;
 
console.log(eerste); // 10
console.log(tweede); // 50
 

Rest Syntax

const cijfers = [10, 20, 30, 40, 50];
 
const [eerste, ...rest] = cijfers;
 
console.log(eerste); // 10
console.log(rest);   // [20, 30, 40, 50]

Spread Operator

De spread operator ... kan worden gebruikt om elementen uit een array te verspreiden in een nieuwe array of als argumenten in een functie.

const cijfers1 = [1, 2, 3];
const cijfers2 = [4, 5, 6];
 
const gecombineerd = [...cijfers1, ...cijfers2];
 
console.log(combineerd); // [1, 2, 3, 4, 5, 6]

Functie Argumenten met Spread

function som(a, b, c) {
  return a + b + c;
}
 
const cijfers = [10, 20, 30];
 
console.log(som(...cijfers)); // 60

1.2 JavaScript Destructuring objects

Dit hoofdstuk gaat specifiek over het destructuren van objects. Hier worden voorbeelden gegeven.

Basis Object Destructuring

const persoon = {
  naam: "Alice",
  leeftijd: 30,
  stad: "Amsterdam"
};
 
const { naam, leeftijd, stad } = persoon;
 
console.log(naam);     // "Alice"
console.log(leeftijd); // 30
console.log(stad);     // "Amsterdam"

Destructuring met Aliassen

const persoon = {
  naam: "Alice",
  leeftijd: 30,
  stad: "Amsterdam"
};
 
const { naam: voornaam, leeftijd: jaren, stad: woonplaats } = persoon;
 
console.log(voornaam);  // "Alice"
console.log(jaren);     // 30
console.log(woonplaats);// "Amsterdam"

Default Waarden

const persoon = {
  naam: "Alice"
};
 
const { naam, leeftijd = 25 } = persoon;
 
console.log(naam);     // "Alice"
console.log(leeftijd); // 25

Rest Syntax

const persoon = {
  naam: "Alice",
  leeftijd: 30,
  stad: "Amsterdam"
};
 
const { naam, ...rest } = persoon;
 
console.log(naam); // "Alice"
console.log(rest); // { leeftijd: 30, stad: "Amsterdam" }
 

Spread Operator

De spread operator kan worden gebruikt om de eigenschappen van een object te verspreiden in een nieuw object.

const adres = {
  stad: "Amsterdam",
  postcode: "1011 AB"
};
 
const persoon = {
  naam: "Alice",
  ...adres
};
 
console.log(persoon); // { naam: "Alice", stad: "Amsterdam", postcode: "1011 AB" }

1.3 JavaScript Nested Destructuring

Nested Array Destructuring

const cijfers = [10, [20, 30], 40];
 
const [eerste, [tweede, derde]] = cijfers;
 
console.log(eerste); // 10
console.log(tweede); // 20
console.log(derde);  // 30

Nested Object Destructuring

const persoon = {
  naam: "Alice",
  adres: {
    stad: "Amsterdam",
    postcode: "1011 AB"
  }
};
 
const { naam, adres: { stad, postcode } } = persoon;
 
console.log(naam);     // "Alice"
console.log(stad);     // "Amsterdam"
console.log(postcode); // "1011 AB"

1.4 JavaScript Parameters Destructuring

Array Parameters

function toonEersteTwee([eerste, tweede]) {
  console.log(eerste);
  console.log(tweede);
}
 
toonEersteTwee([10, 20, 30]); // 10, 20

Object Parameters

function toonPersoon({ naam, leeftijd }) {
  console.log(`Naam: ${naam}`);
  console.log(`Leeftijd: ${leeftijd}`);
}
 
const persoon = {
  naam: "Alice",
  leeftijd: 30
}
 
toonPersoon(persoon); // "Naam: Alice", "Leeftijd: 30"

2 Oefeningen

Hieronder enkele oefeningen betreffende destructuring.

Oefening 1: Basis Array Destructuring

Destructureer de eerste twee elementen van de array cijfers in de variabelen eerste en tweede.

let cijfers = [5, 10, 15, 20, 25];
 
// Destructureer hier
 
console.log(eerste); // Verwacht: 5
console.log(tweede); // Verwacht: 10

Oefening 2: Default Waarden bij Objecten

Destructureer de eigenschappen naam en leeftijd van het object persoon, waarbij leeftijd een standaardwaarde van 18 krijgt als deze niet aanwezig is.

let persoon = {
  naam: "Bob"
};
 
// Destructureer hier
 
console.log(naam);     // Verwacht: "Bob"
console.log(leeftijd); // Verwacht: 18

Oefening 3: Rest Syntax bij Objecten

Destructureer de eigenschap naam en plaats de overige eigenschappen in een variabele rest.

let persoon = {
  naam: "Charlie",
  leeftijd: 40,
  stad: "Rotterdam"
};
 
// Destructureer hier
 
console.log(naam); // Verwacht: "Charlie"
console.log(rest); // Verwacht: { leeftijd: 40, stad: "Rotterdam" }
 

Oefening 4: Nested Object Destructuring

Destructureer de eigenschappen stad en postcode uit het geneste object adres van het object persoon. javascript

let persoon = {
  naam: "David",
  adres: {
    stad: "Utrecht",
    postcode: "3521 BC"
  }
};
 
// Destructureer hier
 
console.log(stad);     // Verwacht: "Utrecht"
console.log(postcode); // Verwacht: "3521 BC"

Oefening 5: Functie Parameters Destructuring

Schrijf een functie toonAdres die een object met de naam adres met de eigenschappen straat en nummer accepteert, en deze waarden logt. Gebruik destructuring in de functie parameter.

function toonAdres({ straat, nummer }) {
  console.log(`Straat: ${straat}`);
  console.log(`Nummer: ${nummer}`);
}
 
// Test de functie
toonAdres(adres);
// Verwacht: "Straat: Hoofdstraat", "Nummer: 123"
 

Oefening 6: Spread Operator met Arrays

Maak een nieuwe array cijfersCombineerd door cijfers1 en cijfers2 samen te voegen met de spread operator.

let cijfers1 = [1, 2, 3];
let cijfers2 = [4, 5, 6];
 
// Voeg samen hier
 
console.log(cijfersCombineerd); // Verwacht: [1, 2, 3, 4, 5, 6]

Oefening 7: Spread Operator met Objecten

Maak een nieuw object persoonVolledig door persoon en adres samen te voegen met de spread operator.

let persoon = {
  naam: "Emma",
  leeftijd: 22
};
 
let adres = {
  stad: "Den Haag",
  postcode: "2511 AA"
};
 
// Voeg samen hier
 
console.log(persoonVolledig); // Verwacht: { naam: "Emma", leeftijd: 22, stad: "Den Haag", postcode: "2511 AA" }