2015-02-11 116 views
1

我有这样的对象我怎样才能获得基于值的键在下划线

{'a': 'test1', 'b': 'test2', 'c': 'test3'}

那么我

[{name: 'test1', selected: true}, {name: 'test3', selected: true}]

现在我想键,其选择是最终名单第二个对象为真

['a', 'c'] 

如何我能做到这一点的下划线

我想这

var inv_obj = _.invert(obj); 

          return _ 

           .filter(objectList, function (obj) { 
            return obj.selected 
           }) 
           .map(function (obj, inv_obj) { 
            return inv_obj[obj] ?:'' 
           }) 
+0

向我们展示了一些代码,那你试试?什么在你的代码中不起作用? – rsz 2015-02-11 03:41:15

+0

@rsz我添加了代码 – user3214546 2015-02-11 03:49:51

+1

'inv_obj [obj]?:'''这看起来像是一个语法错误 – inf3rno 2015-02-11 04:07:13

回答

1

尝试:

var a={'a': 'test1', 'b': 'test2', 'c': 'test3'}; 
var b=[{name: 'test1', selected: true}, {name: 'test3', selected: true}]; 

var c=_.pluck(_.where(b, {selected: true}), 'name'); 
// ['test1', 'test3'] 

var d=_.invert(a); 
console.log(_.values(_.pick(d, c))); 
0
var obj = {'a': 'test1', 'b': 'test2', 'c': 'test3'}; 
var col = [{name: 'test1', selected: true}, {name: 'test2', selected: false}, {name: 'test3', selected: true}]; 

var inv_obj = _.invert(obj); 

var final = _.filter(col, function(obj) { 
    return obj.selected; 
}).map(function (obj) { 
    return inv_obj[obj.name]; 
}); 

console.log(final);