2015-01-21 62 views
1

我想遍歷數組,並做一些事來每個元素使用地圖功能

d = d.map(function(d){ 
    return _.omit(d, 'password'); 
}) 

d = d.map(function(d){ 
    return d.toString(); 
}) 

這些功能是否正常工作時減少JavaScript代碼。但是在它出現太多次之後,代碼變得非常混亂。

所以我想知道是否有更簡單的方法來做我想做的事情?我希望只使用綁定或應用關鍵字或某些模塊(可能是lodash或下劃線..)將代碼減少到一行。這可能嗎?

+0

你可以告訴你真正在這裏做什麼,我的意思是問題。 – Mritunjay 2015-01-21 04:10:27

+1

*「但是出現太多次後,代碼變得非常混亂。」*你的意思是你是否一遍又一遍地調用相同的代碼?創建一個功能! – 2015-01-21 04:13:01

回答

5

如果您使用的是JavaScript版本的支持arrow functions,您可以用這些:

d = d.map((d) => _.omit(d, 'password')); 

或者如果你重複相同的代碼很多,你可以做輔助功能:

function removePasswords(d) { 
    return d.map(function (d) { 
     return _.omit(d, 'password'); 
    }); 
} 

d = removePasswords(d); 

如果你前一後進行了很多map■一個,你可以將它們的內容

d = d.map(function(d) { 
    return _.omit(d, 'password').toString(); 
}); 

否則,我不認爲它會比你已經有的短得多。它已經很短了。

你可能要考慮使用Coffeescript如果你覺得JavaScript是太冗長:

d = d.map (d) -> _.omit(d, 'password') 
+0

我明白了。讓我也測試一下,謝謝! – 2015-01-21 04:26:52

+0

d = d.map((d)=> _.omit(d,'secret'));我說SyntaxError:意外的令牌> .. @@ – 2015-01-21 04:29:54

+0

@ChandlerLee然後,最有可能意味着你沒有使用支持箭頭功能的JS版本。大多數瀏覽器還沒有,但是您可以使用[traceur編譯器](https://github.com/google/traceur-compiler)將ES6編譯爲適合瀏覽器的JavaScript。 – JLRishe 2015-01-21 04:34:41