reduce et filter

Aujourd’hui nous allons illustrer à travers plusieurs exemples l’utilité de reduce et filter, fonctions d’ordre supérieur pour manipuler les collections.

Filter

Comme son nom l’indique, cette fonction permet de boucler une collection et de renvoyer une nouvelle collection contenant uniquement les éléments qui satisferont une condition d’inclusion.

Voici sa signature :

Cette fonction prend en paramètre une closure et retourne une liste ordonnée du même type que l’original. La closure prend en paramètre un élément de la liste et retourne un booléen permettant de savoir si on ajoute l’élément dans la nouvelle liste ou non.

Supposons que nous devons récupérer seulement les éléments paires d’une liste, voici l’approche traditionnelle :

Voici maintenant le même approche avec la fonction filter :

Comme vous pouvez le remarquer il est beaucoup plus simple et moins couteux en mémoire d’utiliser filter puisque nous déclarons plus un tableau vide qui va contenir le résultat.

Reduce

Cette fonction permet de combiner tous les éléments d’une collection selon une certaine opération(multiplication, soustraction…) qui prend en paramètre une valeur initial et renvoie une nouvelle valeur unique.

Voici sa signature :

Cette fonction est générique et prend deux paramètres en entrée et retourne un élément générique. Le premier paramètre est la valeur initiale qui va être utiliser dans l’opération et le deuxième paramètre est une closure qui prend en paramètre l’accumulation de toutes les précédentes itérations et le prochain élément de la liste et retourne le prochain accumulateur.

Supposons que nous devons faire la somme de tous les nombres d’une liste, voici l’approche traditionnelle :

Voici maintenant le même exemple avec la fonction reduce :

En utilisant reduce nous n'avons plus besoin de déclarer une variable qui contient la valeur initial et qui va contenir le résultat de la sommation.

Conclusion

Nous espérons que cet article vous aura aider à comprendre les deux fonctions filter et reduce qui nous permettent d’écrire un code plus élégant et durable et qui a une meilleur visibilité. N’hésitez pas à laisser un commentaire si vous avez des questions ou des remarques.