【发布时间】:2014-12-24 10:19:16
【问题描述】:
我有对象pks 并想提取值为true 的所有键。
pks = {3: false, 7: true, 2: true}
有没有可以返回[7, 2]的下划线函数?我尝试过_.invert,但在此过程中丢失了一个值,因此我正在寻找替代方法。
【问题讨论】:
我有对象pks 并想提取值为true 的所有键。
pks = {3: false, 7: true, 2: true}
有没有可以返回[7, 2]的下划线函数?我尝试过_.invert,但在此过程中丢失了一个值,因此我正在寻找替代方法。
【问题讨论】:
您可以使用内置函数来做到这一点,不需要下划线:
Object.keys(pks)
.filter(function(k){return pks[k]})
.map(Number)
【讨论】:
试试这个:
_.reduce(pks, function(memo, val, key){
if (val) memo.push(key);
return memo;
}, []);
【讨论】:
洛达什:
_.compact(_.map(pks, function(value, prop) {
if(value) {
return prop;
}
}));
【讨论】:
我会使用 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);
【讨论】:
据我所知,没有下划线函数可以专门执行此操作,但有一种方法可以自己完成:
function getTrueKeys(obj) {
var ret = [];
for (var key in obj) {
if (obj.hasOwnProperty(key) && obj[key] === true) {
ret.push(key);
}
}
return ret;
}
【讨论】: