¿ForEach (), every (), each () y map () hacen lo mismo?

De acuerdo con la especificación ECMAScript, para los ejemplos que ha dado …

[].forEach.call([1, 2, 3], function(e) { console.log("forEach: " + e); }); [].every.call([1, 2, 3], function(e) { console.log("every: " + e); }); [].map.call([1, 2, 3], function(e) { console.log("map: " + e); }); 

… Solo uno de ellos se está utilizando correctamente.

.forEach() todos los elementos en una matriz (que realmente existen, es decir, omitirá “agujeros” en matrices dispersas), ejecutando la devolución de llamada dada para cada uno. forEach no muta directamente la matriz sobre la que está iterando y, en última instancia, devuelve undefined .

 var originals = [ 1, 2, 3 ], modifieds = []; originals.forEach( function( item, idx ) { modifieds.push( item * 2 ); }); console.log( modifieds ); // [ 2, 4, 6 ] 

.every() iterará todos los elementos en una matriz (que realmente existe, es decir, omitirá “agujeros” en matrices dispersas), ejecutando la devolución de llamada dada para cada uno, esperando un valor boolean devuelto. Se detendrá una vez que haya alcanzado una evaluación de false . cada devuelve true si no se ha producido false evaluación false .

 var originals = [ 1, 2, 3 ], isNumeric; // Test that _every_ item in this array is numeric isNumeric = originals.every( function( item, idx ) { return typeof item === "number"; }); console.log( isNumeric ); // true // With a different array... var originals = [ 1, 2, "a" ], isNumeric; // Test that _every_ item in this array is numeric isNumeric = originals.every( function( item, idx ) { return typeof item === "number"; }); console.log( isNumeric ); // false 

.map() iterará todos los elementos en una matriz (que realmente existe, es decir, omitirá “agujeros” en matrices dispersas), ejecutará la devolución de llamada dada para cada uno y construirá una nueva matriz con los valores devueltos por la devolución de llamada.

 var originals = [ "a", "b", "c" ], converteds = []; // Convert each array item to char code converteds = originals.map( function( item, idx ) { return item.charCodeAt(0); }); console.log( converteds ); // [ 97, 98, 99 ] 

Por último, no existe un método “cada” nativo: sospecho que Mootools lo agrega a jsFiddle