# Week 3
Maak een folder week-3 aan binnen de reeds aangemaakte folder tijdens de workshop “Start-to-ICT” in de module “Informatie en data geletterdheid (opens new window)”. Maak vervolgens de folders college (voorbeelden uit het hoorcollege) en exercises aan binnen de week-3 folder.
# Spreading
Gegeven een array
let fruits = ['Apple', 'Orange', 'Banana']. Maak een kopie van defruitsarray m.b.v. de spread operator. Bewaar deze kopie in de variabelecopiedFruits. Vergelijk tenslotte of defruitsencopiedFruitsgelijk zijn aan elkaar.Gegeven de volgende code:
let arr1 = ["A", "B", "C"];
let arr2 = ["X", "Y", "Z"];
2
Combineer arr1 en arr2 tot één array m.b.v. van de spread operator. Log het resultaat hiervan naar de console.
- Gegeven de volgende code:
let fruits = ["Apple", "Orange", "Banana"];
let newFruits = ["Cherry", "Melon"];
2
Voeg de inhoud van de newFruits array toe als inhoud van de fruits array. Gebruik vervolgens een for lus om alle elementen uit de fruits array op te lijsten.
- Gegeven de volgende code:
const obj1 = { id: 101, name: "John Doe" };
const obj2 = { age: 28, city: "Ghent" };
2
Combineer beide objecten obj1 en obj2 tot één object bewaard in een variabele employee. Log het resultaat hiervan naar de console.
- Gegeven de volgende code:
let obj1 = { id: 101, name: "John Doe" };
const obj2 = { age: 28, city: "Ghent" };
2
Combineer beide objecten obj1 en obj2 tot één object bewaard in een variabele obj1. Log het resultaat hiervan naar de console.
Maak een functie genaamd
combineTwoArrays(), die twee arrays als argumenten verwacht. In de functie met twee parameters maak je gebruik van de spread operator om er 1 array van te maken.Maak een functie
onlyUniques(), deze functie kan een ongelimiteerd aantal argumenten ontvangen, zowel strings als nummers. Log een array met enkel unieke waardes. Gebruik hiervoor een keyed collection die we net geleerd hebben.
- Maak een functie genaamd
combineAllArrays(), deze functie kan een ongelimiteerd aantal arrays ontvangen. Return éen array met de waardes van de doorgegeven arrays.
- Schrijf een functie genaamd
add(), deze functie kan een niet-gespecifieerd aantal argumenten ontvangen, bv.add(1,5,6). In de functie log je de hoeveelheid argumenten.
- Schrijf een functie genaamd:
addOnlyNumbers(), deze functie kan een ongelimiteerd aantal argumenten ontvangen, zowel strings als nummers, bv.addOnlyNumbers(1,5,6, 'cat', 'dog', 3). Log de volgende zinEr waren ... argumenten, de som van de getallen is ...wanneer je de functie uitvoert.
# Destructuring
- Herschrijf onderstaande code met destructering zodat je niet lijn-per-lijn iedere variabele moet aanmaken.
let item = ["Egg", 0.25, 12];
const name = item[0];
const price = item[1];
const quantity = item[3];
console.log(`Item: ${name}, Quantity: ${quantity}, Price: ${price}`);
2
3
4
5
6
7
- Herschrijf onderstaande code zodat elk nummer overeenkomt met de correcte variabele.
let numbers = [3, 5, 4, 2, 6, 1];
const [one, two, three, four, five, six] = numbers;
console.log(
`One: ${one}, Two: ${two}, Three: ${three}, Four: ${four}, Five: ${five}, Six: ${six}`
);
2
3
4
5
6
- Herschrijf onderstaande code met destructering zodat je niet lijn-per-lijn iedere variabele moet aanmaken.
let person = [12, "Chris", "Owen"];
let firstName = person[1];
let lastName = person[2];
let age = person[10];
console.log(`Person - Age: ${age}, Name: ${firstName} ${lastName}`);
2
3
4
5
6
7
- Herschrijf onderstaande code met destructering zodat je niet lijn-per-lijn iedere variabele moet aanmaken. Zorg dat je geen ongebruikte variabelen hebt.
let person = ["Chris", 12, "Owen"];
let firstName = person[0];
let lastName = person[2];
console.log(`Person - Name: ${firstName} ${lastName}`);
2
3
4
5
6
- Maak een functie
displayName()die een persoon object als argument verwacht. In de functie log je de voor- en achternaam van de persoon. Gebruik object destructuring om de variabelen te maken in de functie.
Dit is de persoon:
const person = {
first: "Elon",
last: "Musk",
twitter: "@elonmusk",
company: "Space X",
};
2
3
4
5
6
- Maak een functie genaamd
calculateSalesTotals(), die functie returned informatie over alle verkopen samen. Je krijgt namelijk de totaal betaalde geldsom én de volledige korting wanneer je deze functie uitvoert.
Dit zijn je sales:
const sales = [
{ item: "PS4 Pro", sold: 3, original: 399.99 },
{ item: "Xbox One X", sold: 1, original: 499.99, discount: 0.1 },
{ item: "Nintendo Switch", sold: 4, original: 299.99 },
{ item: "PS2 Console", sold: 1, original: 299.99, discount: 0.8 },
{ item: "Nintendo 64", sold: 2, original: 199.99, discount: 0.65 },
];
2
3
4
5
6
7
In je functie gebruik je object destructuring om de keys uit objecten te halen. Geef ook een standaard korting van 0.
# Books
Maak een bestand books.js aan.
Beschrijf een boek via een object literal (Book) met de volgende eigenschappen voor een boek:
- title (string)
- author (string)
- isbnNummer (string)
- tags (array van strings)
Een boek object bevat daarnaast ook de getInfo() en listTags() functies.
- De
getInfo()functie zal de naam van het boek teruggeven en de auteur. Als we dit loggen krijgen we bijvoorbeeld:
De Steen der Wijzen - J.K. Rowling
- De
listTags()functie zal de tags genummerd weergeven op een nieuwe lijn. Als we dit loggen krijgen we bijvoorbeeld:
1. Fantasy
2. Harry Potter
3. Bestseller
2
3
Maak nu een instantie van een boek en log nu de info én de tags.
# Colors
Maak een bestand colors.js aan.
Maak een array met verschillende kleuren aan, elke kleur heeft de volgende eigenschappen:
- naam (string)
- code (object)
- rgba (string)
- hsla (string)
- hex (string)
Maak een object literal Color die deze eigenschappen ontvangt. Dit Color object heeft een functie genaamd getInfo(), deze functie zal een overzicht van de kleurcodes tonen.
Name: Donkerblauw
------------------------------
RGBA: rgba(0,0,0)
HSLA: hsla(100, 100%, 50%, 1)
HEX: #152648
2
3
4
5
Een color object bevat daarnaast ook een toString() functie die de naam en enkel de hex-value van het kleur teruggeeft.
Maak enkele instanties van Color met de colors array. Log de output van dit object naar de console.
# Promises maken
- Refactor volgende onderstaande code. De functie ‘job’ zal een promise object moeten returnen en zichzelf resolven na 5 seconden. Zorg ervoor dat de data van je promise ‘hello world’ is.
function job() {
return "hello world";
}
2
3
- Refactor volgende onderstaande code. De functie moet een promise returnen maar je zal je ‘number’ moeten valideren.
- Indien ‘number’ geen nummer is reject je de promise. En zal je de data ‘Het is geen getal’ meegeven.
- Indien ‘number’ een even getal is reject je na 1 seconde de promise en geef je als data ‘Het is een even getal’ mee.
- Indien ‘number’ een oneven getal is resolve je na 2 seconden de promise en geef je als data ‘Yes, het getal is oneven!’ mee.
function isOddNumber(number) {
return something;
}
2
3
# Chaining Promises
Maak 3 functies genaamd
signIn(),getData(),renderDashboard().Zorg er voor dat je
getData()pas zal uitvoeren nadat je succesvol bent aangemeld. Eenmaal je succesvol de data hebt ‘opgehaald’ kan je pas het Dashboard renderen.Wanneer er bij
signIn()ofgetData()iets mis zou lopen alert je de gebruiker.Gebruik in deze oefening nog globale variabelen zoals
userIdendataom te controlleren of je ‘API’ call is gelukt. (net zoalsconst isDadHappy = false;in de cursus).Je moet dus nog geen parameters meegeven/data overdragen van de ene functie naar de andere.
Refactor de vorige oefening zodat je aan de
signIn()functie eenauthToken-parameter kan meegeven. In deze functie zal bij succesvolle API-call een user object worden teruggeven met een id, firstName en lastName.In je
getData()functie zal je dit user object ontvangen en samenvoegen met de data die je van je ‘API-call’ terugkreeg. De ‘data’ van de API zal een object zijn met keys:ordersentotal. Je nieuwe object (met keys:firstName,lastName,ordersentotal) zal worden doorgegeven aan derenderDashboard()functie.In de
renderDashboard()functie zal je volgende boodschap loggen:Je hebt het dashboard opgehaald van ... ..., hij heeft ... orders geplaatst voor een totale waarde van ...Refactor je code door gebruik te maken van async await. Maak hier voor een asynchrone functie genaamd
auth()die je logica zal uitvoeren;
# Emojis
Maak een map (Eng. folder) aan met een naam die een indicatie geeft aan de webapplicatie, bijv.: countries. De map bevat de volgende structuur:
Maak een map (Eng. folder) aan met een naam die een indicatie geeft aan de webapplicatie, bijv.: countries. De map bevat de volgende structuur:
Maak een map (Eng. folder) aan met een naam die een indicatie geeft aan de webapplicatie, bijv.: gdm_gent_cases. De map bevat de volgende structuur:
Maak een map (Eng. folder) aan met een naam die een indicatie geeft aan de webapplicatie, bijv.: cats_as_a_service. De map bevat de volgende structuur:
Maak een map (Eng. folder) aan met een naam die een indicatie geeft aan de webapplicatie, bijv.: harry_potter. De map bevat de volgende structuur:
Maak een map (Eng. folder) aan met een naam die een indicatie geeft aan de webapplicatie, bijv.: harry_potter. De map bevat de volgende structuur: