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
.
- ¿Qué es mejor, Java servlets o Spring, para desarrollar un buen sitio web?
- ¿Qué lenguaje de programación debo elegir para el desarrollo web? PHP o Python y por qué? Soy un principiante.
- ¿Dónde encuentro scripts PHP Laravel?
- ¿Qué herramientas se utilizan para crear sitios web comerciales como Amazon, Flipkart, eBay, etc.?
- ¿Qué marco de JavaScript será más adecuado para una gran aplicación web escrita en C?
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