2016-03-23 152 views
2

我試圖將下劃線移動到lodash。但是這行代碼讓我感到困惑。爲什麼lodash中的_.pick(object,_.identity)返回空對象?

在我目前的項目中,我們有這一行代碼。

obj = _.pick(obj, _.identity); 

這很明顯,它試圖刪除空的屬性。

現在,當我切換到lodash時,同一行代碼會爲我返回空對象。

我想弄清楚爲什麼。我如何在lodash中達到同樣的效果?

我在lodash和下劃線網站上都試過這個。他們產生不同的結果。

這是lodash

var obj = {_v:'10.1', uIP:'10.0.0.0', _ts:'123'} 
_.pick(obj, _.identity); 
Object {} 

這是下劃線

var obj = {_v:'10.1', uIP:'10.0.0.0', _ts:'123'} 
_.pick(obj, _.identity); 
Object {_v: "10.1", uIP: "10.0.0.0", _ts: "123"} 
+0

有看看文檔:https://lodash.com/docs#pick(並注意*之後出現的方法)。 –

+0

噢,就是這樣。我認爲lodash與下劃線兼容。如果你可以把它作爲答案。非常感謝。 – toy

+0

felix是一個野獸,如此之快.... – JordanHendrix

回答

3

爲什麼lodash _.pick(對象,_.identity)返回空對象?

因爲pick在lodash預計的陣列的性能要傳遞給它:

var object = { 'a': 1, 'b': '2', 'c': 3 }; 

_.pick(object, ['a', 'c']); 
// → { 'a': 1, 'c': 3 } 

如何實現lodash同樣的效果?

Lodash有一個名爲pickBy方法,它接受一個回調函數:

var object = { 'a': 1, 'b': '2', 'c': 3 }; 

_.pickBy(object, _.isNumber); 
// → { 'a': 1, 'c': 3 } 
0

我有同樣的問題,lodash有一個稍微不同的名稱,這種方法比下劃線:

var object = { 'a': 1, 'b': '2', 'c': 3 }; 

_.pickBy(object, _.isNumber); 
// → { 'a': 1, 'c': 3 } 
相關問題