2012-03-15 68 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函數重新分配整個數組,因此感覺效率低下。

你會如何做到這一點?

是的,我知道我這得太多:)

+4

只要使用下劃線功能,直到確定它是性能問題。這是非常可讀和乾淨的,所以除非它真的是一個問題,否則你的「低效率感」不應該阻止你轉移到更緊迫的問題:) – PatrikAkerstrand 2012-03-15 23:24:00

+0

完全正確!儘管如此,我只是好奇而已。 – Eric 2012-03-15 23:25:21

回答

25

Array#map()方法。

var arr = arr.map(fn); 

_.map()可能以相同的方式實施。

+2

如果您使用的是Node.js,那麼您知道您使用的是JS解釋器,因此您知道ECMAScript5中的內容已實現......其中包括Array#map :) – RyanWilcox 2012-03-15 23:40:56

相關問題