获取所有 JavaScript 对象中值为 true 的键。

9

我有一个对象pks,想要提取所有值为true的键。

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

是否有一个下划线函数可以返回[7, 2]?我尝试过_.invert,但在这个过程中丢失了一个值,所以我正在寻找替代方案。

5个回答

14

你可以使用内置函数来实现这一点,不需要使用Underscore:

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;
}, []);

1
我会使用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);


1
Lodash:
_.compact(_.map(pks, function(value, prop) {
  if(value) {
    return prop;
  }
}));

0
据我所知,没有一个特别针对此功能的下划线函数,但是您可以自己实现它的方法:
function getTrueKeys(obj) {
   var ret = [];
   for (var key in obj) {
      if (obj.hasOwnProperty(key) && obj[key] === true) {
         ret.push(key);
      }
   }
   return ret;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接