2014-10-28 61 views
1

我有對象PKS並想提取所有按鍵,其中值爲trueMap對象鍵數組值是true

pks = {3: false, 7: true, 2: true} 

有下劃線的功能,可以返回[7, 2]?我試過_.invert但我失去了在這個過程中的一個值,所以我正在尋找一個替代

回答

5

您可以通過內置的功能,無需下劃線做到這一點:

Object.keys(pks) 
    .filter(function(k){return pks[k]}) 
    .map(Number) 
3

試試這個:

_.reduce(pks, function(memo, val, key){ 
    if (val) memo.push(key); 
    return memo; 
}, []); 
0

據我知道有沒有那麼明確這樣做下劃線的功能,但有一個辦法,你可以自己做:

function getTrueKeys(obj) { 
    var ret = []; 
    for (var key in obj) { 
     if (obj.hasOwnProperty(key) && obj[key] === true) { 
     ret.push(key); 
     } 
    } 
    return ret; 
} 
0

Lodash:

_.compact(_.map(pks, function(value, prop) { 
    if(value) { 
    return prop; 
    } 
})); 
相關問題