Revenir

Entre ton email pour recevoir le guide complet pour apprendre Swift peu importe ton niveau

Méthodes pour parcourir les tableaux en Swift

Map, filtrer, reduce, flatMap, compactMap

Autant de méthodes différentes expliquées pour vous aider à boucler sur vos collections !

Avant de nous plonger dans le code, vous devez vous familiariser avec les closures. Il est nécessaire pour cet article sinon vous serez complètement perdu…

Si tout va bien, allons-y !

La méthode map

Celui-ci est le plus facile. Toutes les autres méthodes que nous allons utiliser sont basées sur celui-ci.

Cette méthode ne fera que boucler sur chaque élément de votre collection et y appliquera la même fonction.

En voici un exemple :

map Swift

Dans cet exemple, je multiplie simplement chaque nombre du tableau par deux.

Bien sûr, il fonctionne aussi avec tous les types de collections comme les tableaux, les sets, les tuples et il y a une petite différence avec les dictionnaires.

La différence avec les dictionnaires est que map doit prendre un deuxième paramètre qui est la clé de la valeur passée dans la closure :

map sur des dictionnaires

Si vous voulez avoir accès à l’index du tableau en le bouclant, il vous suffit d’appeler la fonction enumerated et de l’enchaîner avec la fonction map, puis d’utiliser map comme si vous l’utilisiez sur un dictionnaire.

La méthode filter

Comme je l’ai dit, cette méthode utilise la même logique que la fonction map mais au lieu d’appliquer une fonction à chaque élément de la collection, on leur applique une condition.

La closure doit retourner un booléen indiquant si l’élément qu’un élément donné doit rester dans la collection ou non.

filter Swift

Dans cet exemple, je ne conserve que les valeurs supérieures ou égales à 18.

Comme vous l’aurez deviné, il fonctionne sur tous les types de collections mais si vous utilisez un dictionnaire, vous devrez passer un deuxième paramètre pour la clé.

Avec les dictionnaires, vous pouvez également filtrer à l’aide de la clé : la closure n’a plus qu’à retourner un booléen !

La méthode reduce

Celle-ci est un peu plus délicate mais une fois que vous comprenez comment ça fonctionne, ça peut vous être extrêmement utile.

La méthode reduce retourne une valeur unique lors de l’itération sur un tableau.

Par exemple, vous pouvez l’utiliser pour additionner tous les nombres d’une collection ou vous pouvez aussi concaténer toutes les chaînes de caractères d’une collection.

Cela fonctionne comme la méthode map mais avec 2 paramètres dans la closure.

La première est la valeur qui stocke le résultat futur qui sera renvoyé une fois la boucle sur la collection terminée.

Le second est la valeur courante lors du bouclage d’une collection (comme dans les exemples précédents).

En voici un exemple :

reduce Swift

A la fin de ce code, sum est égale à la somme de toutes les valeurs du tableau prices.

A chaque itération, nous ajoutons la valeur courante à la variable retournée par la closure.

Le premier paramètre de la fonction est la valeur de départ du résultat.

  • Première itération : la closure renvoie 0.0 + 19.0
  • Deuxième itération : la closure renvoie 19.0 + 20.99
  • Troisième itération : la closure renvoie 39.99 + 3.50

Si vous voulez l’utiliser sur un dictionnaire, le deuxième paramètre sera un tuple de la clé et de la valeur pour chaque itération.

La méthode flatMap

Celle-ci est comme la fonction map mais il “flat” toutes les collections imbriquées dans celle que vous êtes en train de boucler.

Cela signifie que s’il y a un tableau dans un tableau, la fonction flatMap fera une boucle sur le tableau mais aussi sur le ou les tableaux imbriqués et appliquera la closure passée en paramètre sur tous ces tableaux et retournera un tableau de valeurs sans aucun tableau imbriqué.

Attention : il “flat” aussi les string.

Si vous avez un tableau de chaînes de caractères et que vous utilisez flatMap dessus, vous aurez un tableau contenant chaque caractère de chaque chaîne séparés.

flatMap Swift

La méthode compactMap

C’est exactement la même fonction que la fonction flatMap mais au lieu d’aplatir la collection, elle supprime toutes les valeurs nulles et exécute seulement le code sur les valeurs non nulles.

Conclusion

N’hésitez pas à utiliser ces méthodes!

Elles sont extrêmement puissantes lorsque vous faites face à de grosses collections, par exemple lorsque vous récupérez des données depuis une API.