Higher Order functions - YunusEmreCMD/blokTech GitHub Wiki

Het hebben en schrijven van super veel regels code, betekent niet altijd dat dit goed en erg efficiënt is. Lange regels code, kunnen vaak verkort worden, wat eigenlijk meer gewild is. Dit komt doordat concepten op deze manier op een eenvoudiger manier worden uitgedrukt en makkelijker te begrijpen zijn.

Abstractions

Abstracties verbergen details en geven ons de mogelijkheid om op een hoger (of abstract) niveau over problemen te praten. Het is niet altijd handig om super korte regels code te schrijven, omdat je dan wellicht moeilijke termen, woorden moet gebruiken die onder veel mensen onbekend zijn.

Arrays hebben een aantal nuttige hoge-orde methodes. We kunnen foreach gebruiken om te loopen door objecten in een array. De filter methode geeft een nieuwe array terug met daarin alleen de elementen die de predicaat functie hebben doorgegaan. Een array aanpassen door elk element door een functie te laten halen wordt gedaan met map. Reduce kunnen we gebruiken om alle elementen in een array samen te voegen tot 1 waarde. De some methode test of een element matcht met een predikaatfunctie. En tot slot met de findIndex kunnen we de positie van de eerste element inzien die matcht met de eerste element van een predikaat.  

Voorbeelden methodes:

Map

function map(array, transform) {
  let mapped = [];
  for (let element of array) {
    mapped.push(transform(element));
  }
  return mapped;
}

Array filteren

function filter(array, test) {
  let passed = [];
  for (let element of array) {
    if (test(element)) {
      passed.push(element);
    }
  }
  return passed;
}

Reduce

function reduce(array, combine, start) {
  let current = start;
  for (let element of array) {
    current = combine(current, element);
  }
  return current;
}

console.log(reduce([1, 2, 3, 4], (a, b) => a + b, 0));
// → 10