我有对象pks
,并希望提取值为true
的所有键。
pks = {3: false, 7: true, 2: true}
是否有可以返回[7, 2]
的下划线功能?我已经尝试了_.invert
但是我在这个过程中丢失了一个值,所以我正在寻找替代方案。
答案 0 :(得分:7)
您可以使用内置函数执行此操作,无需使用Underscore:
Object.keys(pks)
.filter(function(k){return pks[k]})
.map(Number)
答案 1 :(得分:3)
试试这个:
_.reduce(pks, function(memo, val, key){
if (val) memo.push(key);
return memo;
}, []);
答案 2 :(得分:0)
据我所知,没有一个下划线功能可以专门做到这一点,但有一种方法你可以自己做:
function getTrueKeys(obj) {
var ret = [];
for (var key in obj) {
if (obj.hasOwnProperty(key) && obj[key] === true) {
ret.push(key);
}
}
return ret;
}
答案 3 :(得分:0)
<强> Lodash:强>
_.compact(_.map(pks, function(value, prop) {
if(value) {
return prop;
}
}));
答案 4 :(得分:0)
我将使用Object.entries(),filter()和map():
const pks = {3: false, 7: true, 2: true};
const trueKeys = Object.entries(pks).filter(([_, v]) => v).map(([k, _]) => +k);
console.log(trueKeys);