2012-03-15 3 views
14

私は関数と配列を持っているとしましょう。私は配列の各エントリに関数を適用して配列を変更したい。この関数は値を直接変更しません。新しい値を返します。擬似コードでnode.jsまたはJavaScriptで配列をマップするきれいな方法

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

私に起こったこと、これを行うにはカップルの方法があります。

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

それとも、私がNode.jsのを使用していますので内蔵のアンダースコアを持っています:

arr = _.map(arr, fn); 

しかし、これはどちらもちょっとちがうようです。標準の "for"ブロックは過度に冗長であり、_map関数は配列全体を再割り当てして非効率に感じます。

どうすればよいですか?

はい、私はこれをoverthinkingよ:)

+4

パフォーマンス上の問題であることが確実にわかるまで、アンダースコア機能を使用してください。それは非常に読みやすく、きれいなので、実際に問題がなければ、あなたの「非効率性」はより緊急な問題に進むことを妨げません。 – PatrikAkerstrand

+0

完全に真実です!それにもかかわらず、私はちょうど興味があります。 – Eric

答えて

25

Array#map()方法を承知しています。

var arr = arr.map(fn); 

_.map()はおそらく同じ方法で実装されます。

+2

Node.jsを使用している場合は、使用しているJSインタプリタを知っているので、ECMAScript5のものが実装されていることがわかります。これにはArray#mapが含まれています:) – RyanWilcox

関連する問題