2012-03-15 11 views
14

Diciamo che ho una funzione e un array. Voglio modificare l'array applicando la funzione a ciascuna voce nell'array. La funzione NON modifica direttamente il valore; restituisce un nuovo valore.Modo pulito per mappare un array in node.js o JavaScript

In pseudo-codice,

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

Ci sono un paio di modi per fare questo che si è verificato a me:

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

Oppure, dal momento che sto usando node.js e hanno costruito in sottolineatura :

arr = _.map(arr, fn); 

Ma questo entrambi sembrano un po 'goffo. Il blocco standard "for" sembra eccessivamente prolisso e la funzione _.map riassegna l'intero array in modo da risultare inefficiente.

Come lo faresti?

Sì, sono consapevole che sto overthinking questo :)

+4

Basta usare la funzione di sottolineatura finché non si è certi che si tratta di un problema di prestazioni. È molto leggibile e pulito, quindi a meno che non sia effettivamente un problema, la tua "sensazione di inefficienza" non dovrebbe impedirti di passare a questioni più urgenti :) – PatrikAkerstrand

+0

Completamente vero! Sono solo curioso, comunque. – Eric

risposta

25

Il metodo Array#map().

var arr = arr.map(fn); 

_.map() è probabilmente implementato nello stesso modo.

+2

Se stai usando Node.js sai quale JS Interpreter stai usando, quindi sai che le cose da ECMAScript5 sono implementate ... che include Array # map :) – RyanWilcox

Problemi correlati