2012-03-15 12 views
14

Bir işlev ve dizim olduğunu varsayalım. Dizideki her girdiye işlevi uygulayarak diziyi değiştirmek istiyorum. Fonksiyon doğrudan değeri DEĞİŞTİRMEZ; yeni bir değer döndürür.Bir diziyi node.js veya JavaScript'te eşlemenin yolunu temizleyin

pseudo-code

,

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

aklıma o bunu yapmak için birkaç yol vardır:

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

Ya da, node.js kullanıyorum beri ve alt çizgi yerleşik olması :

arr = _.map(arr, fn); 

Ama bu ikisi biraz aksak görünüyor. Standart "for" bloğu aşırı derecede ayrıntılı geliyor ve _.map işlevi tüm diziyi yeniden atayarak verimsiz hissediyor.

Bunu nasıl yaparsınız?

Evet, ben bu :)

+4

Bir performans sorunu olduğundan emin olunana kadar alt çizgi işlevini kullanın. Bu çok okunabilir ve temiz, bu yüzden aslında bir sorun değilse, "verimsizlik hissi" daha fazla acil konulara geçmenizi engellememelidir :) – PatrikAkerstrand

+0

Tamamen doğru! Yine de merak ediyorum. – Eric

cevap

25

Array#map() yöntemi overthinking ediyorum farkındayım. Muhtemel olarak aynı şekilde uygulanmaktadır.

+2

Eğer Node.js kullanıyorsanız, hangi JS Tercümanını kullandığınızı biliyorsunuz, bu yüzden ECMAScript5'ten gelen şeylerin uygulandığını biliyorsunuz. – RyanWilcox