Array#each exécute le bloc donné pour chaque élément du tableau, puis renvoie le tableau lui-même.
Array#map exécute également le bloc donné pour chaque élément du tableau, mais retourne un nouveau tableau dont les valeurs sont les valeurs de retour de chaque itération du bloc.
Exemple: supposons que vous ayez un tableau défini ainsi:
arr = ["tokyo", "london", "rio"]
Ensuite, essayez d'exécuter each:
arr.each { |element| element.capitalize }
# => ["tokyo", "london", "rio"]
Notez que la valeur de retour est simplement le même tableau. Le code à l'intérieur du eachbloc est exécuté, mais les valeurs calculées ne sont pas renvoyées; et comme le code n'a pas d'effets secondaires, cet exemple n'effectue aucun travail utile.
En revanche, l'appel de la mapméthode du tableau retourne un nouveau tableau dont les éléments sont les valeurs de retour de chaque cycle d'exécution du mapbloc:
arr.map { |element| element.capitalize }
# => ["Tokyo", "London", "Rio"]