How do i return an object key name only if the value of it is true?
I\'m using underscore and the only thing i see is how to return keys which is easy, i want to avo
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 objectSo 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
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
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/