JS - Chapitre 12 - Lazy transformations Flashcards
Pourquoi a t’on besoin de Lazy transformations?
Parce que les filter, map et reduce produisent un nouveau tableau à chaque étape => pénalités pour des grandes tailles
Quelle méthode permet d’exprimer le filter et le map?
reduce et en faisant un reducer
exemple de map
function map(transform) {
return function reducer(arr,value) {
const newValue = transform(value);
return […arr, newValue];
}
}
Appel avec la méthode qui double une valeur
const newNumbers = numbers.reduce(map(double), []);
Qu’est que transducers
elle prends un reducer et produit un nouveau reducer
En quoi c’est important les transducers
On peut combiner les transformations à l’intérieur d’un transducer pour eviter de faire une copie à chaque étape
Qu’est-ce qui nous permet de permet de faire du chainage de transformation en mode “Lazy”
dans immutable.JS il y a Seq
Comment fonctionne Seq
Seq applique une série de transformation et retourne une “Seq”. Il faut ensuite transformer en Array (avec toArray())
Exemple de Seq
const sequence = Seq( [1,2,3,4]).fliter(isEven).map(double)
Defaut de toArray pour les Seq
La conversion de Seq en Array est couteuse, il faudrait faire l’ensemble des opérations et à la fin faire le toArray
Comment créer une séquence de nombres entre start et end
Depuis Immutable c’est Range avec Range(start, end) - Attention 0 based