2012-03-15 28 views
14

Digamos que tengo una función y una matriz. Quiero modificar la matriz aplicando la función a cada entrada en la matriz. La función NO modifica el valor directamente; devuelve un nuevo valor.Manera limpia de asignar una matriz en node.js o JavaScript

En pseudo-código,

for (entry in array) { 
    entry = function(entry); 
} 

Hay un par de maneras de hacer esto que se me ocurrió:

for (var i = 0; i < arr.length; i++) { 
    arr[i] = fn(i); 
} 

O, ya que estoy usando Node.js y han subrayado construido en :

arr = _.map(arr, fn); 

Pero esto parece un poco torpe. El bloque "para" estándar se siente excesivamente detallado, y la función _.map reasigna la matriz completa, por lo que se siente ineficiente.

¿Cómo harías esto?

Sí, soy consciente de que estoy pensando demasiado esto :)

+4

Simplemente use la función de subrayado hasta que esté seguro de que se trata de un problema de rendimiento. Es muy legible y limpio, por lo tanto, a menos que sea realmente un problema, su "sensación de ineficiencia" no le impedirá pasar a problemas más apremiantes :) – PatrikAkerstrand

+0

¡Completamente cierto! Sin embargo, tengo curiosidad. – Eric

Respuesta

25

El método Array#map().

var arr = arr.map(fn); 

_.map() probablemente se implemente de la misma manera.

+2

Si está utilizando Node.js, sabe qué intérprete de JS está utilizando, así sabrá que se implementan cosas de ECMAScript5 ... que incluye Array # map :) – RyanWilcox

Cuestiones relacionadas