Je me suis toujours demandé quelle était la différence entre eux. Ils semblent tous faire la même chose ...
javascript
foreach
map-function
0x499602D2
la source
la source
every
que ceforEach
ne sont pas des méthodes jQuery, je pense qu'il est peu probable que la question se rapporte à jQuery de quelque manière que ce soit. developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6Réponses:
La différence réside dans les valeurs de retour.
.map()
renvoie un nouveau tableau d'objets créé en effectuant une action sur l'élément d'origine..every()
renvoie un booléen - vrai si chaque élément de ce tableau satisfait la fonction de test fournie. Une différence importante avec.every()
est que la fonction de test peut ne pas toujours être appelée pour chaque élément du tableau. Une fois que la fonction de test renvoie false pour un élément, aucun autre élément de tableau n'est itéré. Par conséquent, la fonction de test ne devrait généralement pas avoir d' effets secondaires ..forEach()
ne retourne rien - Il itère le tableau en effectuant une action donnée pour chaque élément du tableau.Lisez à propos de ceux-ci et de nombreux autres méthodes méthodes d'itération Array sur MDN .
la source
La réponse de gilly3 est excellente. Je voulais juste ajouter un peu d'informations sur d'autres types de fonctions de "boucle à travers les éléments".
.every()
(arrête de boucler la première fois que l'itérateur retourne false ou quelque chose de falsey).some()
(arrête de boucler la première fois que l'itérateur retourne vrai ou quelque chose de vrai).filter()
(crée un nouveau tableau comprenant des éléments où la fonction de filtre renvoie true et en omettant ceux où elle renvoie false).map()
(crée un nouveau tableau à partir des valeurs renvoyées par la fonction itérateur).reduce()
(crée une valeur en appelant de manière répétée l'itérateur, en passant les valeurs précédentes; voir la spécification pour les détails; utile pour additionner le contenu d'un tableau et bien d'autres choses).reduceRight()
(comme réduire, mais fonctionne dans l'ordre décroissant plutôt que croissant)crédit à: TJCrowder Pour-chacun sur un tableau en JavaScript?
la source
Une autre considération aux bonnes réponses ci-dessus est le chaînage. Avec forEach (), vous ne pouvez pas enchaîner, mais avec map (), vous le pouvez.
Par exemple:
avec .forEach (), vous ne pouvez pas faire le .sort (), vous obtiendrez une erreur.
la source
Pour Ramda , la différence entre
R.map()
etR.forEach()
est:R.forEach()
renvoie le tableau d'origine alors queR.map()
renvoie un foncteurR.forEach()
ne peut opérer que sur un tableau maisR.map()
peut également fonctionner sur un objet (c'est-à-dire que les paires clé / valeur de l'objet sont traitées comme un tableau)la source