Return an object key only if value is true
There is another alternative, which could be used with Lodash library using two methods:
_.pickBy
- it creates an object composed of the object properties. If there is no additional parameter (predicate) then all returned properties will have truthy values._.keys(object)
- creates an array of keys from the given object
So in your example it would be:
var obj = {1001: true, 1002: false};
var keys = _.keys(_.pickBy(obj));
// keys variable is ["1001"]
Using Underscore.js library, it would be very similar. You need to use _.pick
and _.keys
functions. The only difference is that _.pick
would need to have predicate function, which is _.identity
.
So the code would be as follows:
var obj = {1001: true, 1002: false};
var keys = _.keys(_.pick(obj, _.identity));
// keys variable is ["1001"]
I hope that will help
If you're trying to combine filtering and iterating over an object you're usually after _.reduce
(the Swiss Army Knife iterator):
var trues = _(obj).reduce(function(trues, v, k) {
if(v === true)
trues.push(k);
return trues;
}, [ ]);
Demo: http://jsfiddle.net/ambiguous/2et6T/
Object.keys gets the keys from the object, then you can filter the keys based on the values
var obj = {1001: true, 1002: false};
var keys = Object.keys(obj);
var filtered = keys.filter(function(key) {
return obj[key]
});
FIDDLE