2013-12-19 52 views
1

我想運行一個反向循環,並將每個項作爲參數傳遞給一個函數。 我可以使用underscore在單行中反向運行循環

var myItems = [1,2,3,4,5]; 
_.each(myItems, print); //It calls print in sequential order but I want reverse order 

function print(value) { 
    value = value + 1; 
    // Some other modifications 
    console.log(value); 
} 

現在,我需要做同樣的事情,但我想運行反向循環。我知道我可以寫循環這樣

for (var i = myItems.length - 1; i >= 0; i--) { ... } 

我找簡潔code..something像_.reverseLoopmyItems.reverseunderscoreArray.prototype是否有其他可用的API可用於反向運行循環併爲每個項目執行回調?

+2

_.each(myItems.reverse(),打印); –

+1

這可以使一個很好的開源貢獻。 – user2910265

+0

@wared我只是沒有意識到'reverse'方法..可能發生在任何人身上。 – sachinjain024

回答

5

reverse()方法反轉到位陣列。第一個數組 元素成爲最後一個,最後成爲第一個。

所以,你可以扭轉你的數組,並使用:

_.each(myItems.reverse(), print) 

或者

_.each(myItems.slice().reverse(), print) 
+2

在反向之前添加片會創建一個淺拷貝並保持初始數組未被修改,是否正確? – user2910265

+1

@ user2910265是的。只需使用'array.slice(0).reverse()'。 '0'當然是可選的。 –

+1

@ user2910265使用'slice'是一個選項:'Array.apply(Array,array)'。 – leaf