2015-02-11 62 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);