Pregunta

Siempre me he preguntado cuál era la diferencia entre ellos. Todos parecen hacer lo mismo ...

¿Fue útil?

Solución

La diferencia está en los valores de retorno.

.map() Devuelve una nueva matriz de objetos Creado tomando algunas medidas sobre el elemento original.

.every() Devuelve un booleano - Verdadero si cada elemento en esta matriz satisface la función de prueba proporcionada. Una diferencia importante con .every() es que la función de prueba no siempre se solicita para cada elemento en 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 que realiza una acción dada para cada elemento en la matriz.

Lea sobre estos y los muchos otros Métodos de iteración de matriz en MDN.

Otros consejos

La respuesta de Gilly3 es genial. Solo quería agregar un poco de información sobre otros tipos de funciones de "elementos de bucle a través".

  • .every() (Deja de bucle la primera vez que el iterador devuelve falso o algo falsificado)
  • .some() (Deja de bucle 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 verdaderas y omitiendo las donde devuelve falsas)
  • .map() (Crea una nueva matriz a partir de los valores devueltos por la función Iterator)
  • .reduce() (desarrolla un valor repetido llamando al iterador, pasando valores anteriores; consulte la especificación de los detalles; útil para sumar el contenido de una matriz y muchas otras cosas)
  • .reduceRight() (como reducir, pero funciona en el orden descendente en lugar de ascender)

crédito a: tjcrowder Para cada uno sobre una matriz en JavaScript?

Otra consideración a las grandes respuestas anteriores es el encadenamiento. Con foreach () no puedes cadena, pero con map (), puedes.

Por ejemplo:

var arrayNumbers = [3,1,2,4,5];

arrayNumbers.map(function(i) {
    return i * 2
}).sort();

Con .ForEach (), no puede hacer el .sort (), obtendrá un error.

Para Ramda, la diferencia entre R.map() y R.forEach() es:

  1. R.forEach() Devuelve la matriz original mientras R.map() Devuelve un functor
  2. R.forEach() solo puede operar en matriz pero R.map() También puede funcionar en un objeto (es decir, los pares de clave/valor del objeto se tratan como una matriz)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top