cmda-bt / cmda-bt/fe-course-20-21
Week 3: Samenvatting hoofdstuk 5
- Dominant language
- No language data
- Stars
- 30
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
# Chapter 5 Higher-Order Functions
## Abstraction
**Abstractions** verbergen details en geeft je de mogelijkheid om op een hoger niveau problemen in te zien.
Het een nuttige vaardigheid om op te zien wanneer je op een te laag abstractieniveau werkt.
## Abstracting repetition
Het komt vaak voor dat een applicatie een bepaalde actie meerdere keren uitvoert. Hiervoor kan je een **for loop** gebruiken:
```javascript
for (let i = 0; i < 10; i++) {
console.log(i);
}
```
Je kan ook **repeat** gebruiken. repeat is korter dan een for loop.
```javascript
repeat(5, i => {
labels.push(`Unit ${i + 1}`);
});
```
## Higher-order functions
Functies die op andere functies werken door ze als argumenten te beschouwen of door ze terug te geven, worden **higher-order functions** genoemd.
```javascript
function greaterThan(n) {
return m => m > n;
}
let greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
```
## Filter
Om de scripts in de dataset te vinden die nog in gebruik zijn, kan je de **filter** method gebruiken. Deze filtert de elementen in een array eruit die niet slagen voor een test.
```javascript
function filter(array, test) {
let passed = [];
for (let element of array) {
if (test(element)) {
passed.push(element);
}
}
return passed;
}
console.log(filter(SCRIPTS, script => script.living));
// → [{name: "Adlam", …}, …]
```
## Map
De **map** method transformeert een array door een functie toe te passen op al zijn elementen en een nieuwe array te maken op basis van de geretourneerde waarden. De nieuwe array heeft dezelfde lengte als de input array.
```javascript
function map(array, transform) {
let mapped = [];
for (let element of array) {
mapped.push(transform(element));
}
return mapped;
}
let rtlScripts = SCRIPTS.filter(s => s.direction == "rtl");
console.log(map(rtlScripts, s => s.name));
// → ["Adlam", "Arabic", "Imperial Aramaic", …]
```
## Reduce
Met de **reduce** method kan je waardes in een array combineren tot 1 waarde.
```javascript
console.log([1, 2, 3, 4].reduce((a, b) => a + b));
// → 10
```
Contributor guide
No contributing guide indexed for this repository
Research direction
The payload names no target file, test, or entry point. First locate where chapter summaries are stored and compare neighboring chapters; done means this Dutch summary of Chapter 5 is placed in the expected course-material location and covers the listed topics consistently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- content, documentation
- Issue type
- Documentation
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100