使用Lodash过滤对象数组以仅包含Key

时间:2016-07-25 21:19:33

标签: javascript filtering lodash

我有以下对象数组:

 {
   running: false,
   swimming: false,
   drawing: true
  }

我想只使用具有false属性的对象数组进行过滤。从那里我只想获得数组的键。

例如

 [running, swimming]

我的第一部分是通过以下方法删除具有真正布尔值的值:

var filtered = _.pick(hobbies, function(value, key) {return !value;});

什么是最好的方式来平和"当前数组,以便我只有键值?

2 个答案:

答案 0 :(得分:3)

正如纯JavaScript一样,我建议您使用Object.keysArray.prototype.filter

var obj = {
  running: false,
  swimming: false,
  drawing: true
};

var items = Object.keys(obj).filter(k => !obj[k]);
console.log(JSON.stringify(items));

答案 1 :(得分:3)

Lodash _.keys()功能正是您所要求的:



var hobbies = {
    running: false,
    swimming: false,
    drawing: true
};

var filtered = _.keys(_.pick(hobbies, function(value) {return !value;}));

console.log(filtered);

// alternate approach using chain notation
var keys = _
    .chain(hobbies)
    .pick(v => !v)
    .keys();

console.log(keys);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.9.3/lodash.js"></script>
&#13;
&#13;
&#13;

请注意,在Lodash 4.x中,_.pick()已更改,您应该使用_.pickBy() aboce。