Siempre me he preguntado cuál era la diferencia entre ellos. Todos parecen hacer lo mismo ...
javascript
foreach
map-function
0x499602D2
fuente
fuente
every
yforEach
no son métodos de jQuery, creo que es poco probable que la pregunta se refiere a jQuery de ninguna manera. developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6Respuestas:
La diferencia está en los valores devueltos.
.map()
devuelve una nueva matriz de objetos creados al realizar alguna acción en el elemento original..every()
devuelve un valor booleano : verdadero si todos los elementos de esta matriz satisfacen la función de prueba proporcionada. Una diferencia importante con.every()
es que no siempre se puede llamar a la función de prueba para cada elemento de la matriz. Una vez que la función de prueba devuelve falso para cualquier elemento, no se iteran más elementos de matriz. Por lo tanto, la función de prueba generalmente no debe tener efectos secundarios ..forEach()
no devuelve nada : itera la matriz realizando una acción determinada para cada elemento de la matriz.Lea sobre estos y muchos otros métodos de iteración Array en MDN .
fuente
La respuesta de gilly3 es genial. Solo quería agregar un poco de información sobre otros tipos de funciones de "elementos en bucle".
.every()
(deja de repetirse la primera vez que el iterador devuelve falso o algo falso).some()
(deja de repetirse la primera vez que el iterador devuelve verdadero o algo verdadero).filter()
(crea una nueva matriz que incluye elementos donde la función de filtro devuelve verdadero y omite los que devuelve falso).map()
(crea una nueva matriz a partir de los valores devueltos por la función de iterador).reduce()
(construye un valor llamando repetidamente al iterador, pasando valores anteriores; vea la especificación para los detalles; útil para sumar el contenido de una matriz y muchas otras cosas).reduceRight()
(como reducir, pero funciona en orden descendente en lugar de ascendente)crédito a: TJCrowder ¿ Para cada uno sobre una matriz en JavaScript?
fuente
Otra consideración a las grandes respuestas anteriores es el encadenamiento. Con forEach () no puede encadenar, pero con map (), puede hacerlo.
Por ejemplo:
con .forEach (), no puede hacer el .sort (), obtendrá un error.
fuente
Para Ramda , la diferencia entre
R.map()
yR.forEach()
es:R.forEach()
devuelve la matriz original mientras queR.map()
devuelve un functorR.forEach()
solo puede operar en una matriz, peroR.map()
también puede operar en un objeto (es decir, los pares clave / valor del objeto se tratan como una matriz)fuente