cmda-bt / cmda-bt/fe-course-20-21

Week 3: Samenvatting hoofdstuk 5

Open
#151 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.