Primero, verdadero Objects
no tiene un método nativo .map()
, ni una propiedad .length
. Así que estamos hablando de Arrays
o Array-like-objects
(objetos jQuery, por ejemplo).
Sin embargo, no hay una forma más rápida de iterar que utilizando un for
, while
o do-while
loop nativo. Todas las demás operaciones funcionales realizan (adivina qué) una función para cada iteración que cuesta.
jQuerys .each()
ejecutará simplemente un bucle for-in
cuando se le pase un objeto. Esa es la forma más rápida de recorrer un objeto. Puede usar un for-in
usted mismo y guardar la llamada general.
Otra "buena" manera en términos de legibilidad es hacer uso de las características ES5 como .keys()
y .map()
. Por ejemplo:
var myObj = {
foo: 'bar',
base: 'ball',
answer: 42,
illuminati: 23
};
Object.keys(myObj).map(function(prop) {
console.log(myObj[ prop ]);
});
que creo que es una muy buena tradeof en términos de readabilty, confort y rendimiento. Por supuesto, debe usar una biblioteca de abstracción de ES5 para el viejo navegador.
Pero, de nuevo, no hay manera de vencer los bucles nativos en términos de rendimiento.
Sus ejemplos no son equivalentes (ni tienen el primer sentido del fragmento de código). ¿Quiere ejecutar 'someFunction' para cada elemento de la lista? ¿Devuelve un valor y desea reemplazar la entrada de la lista con el valor de retorno? Esa es en realidad la idea de 'mapa'. –