如何用lodash过滤对象的键?

我有一个键与对象,我只想保留一些与他们的价值的关键?

我尝试使用filter

 var data = { "aaa":111, "abb":222, "bbb":333 }; var result = _.filter(data, function(value, key) { return key.startsWith("a"); }) console.log(result); 

但它打印一个数组:

 [111, 222] 

这不是我想要的。

如何用lodash做到这一点? 还是别的东西,如果lodash不工作?

现场演示: http : //jsbin.com/moqufevigo/1/edit?js,output

Lodash有一个_.pickBy函数 ,它正是你正在寻找的东西。

 var thing = { "a": 123, "b": 456, "abc": 6789 }; var result = _.pickBy(thing, function(value, key) { return _.startsWith(key, "a"); }); console.log(result.abc) // 6789 console.log(result.b) // undefined 
 <script src="lodash/4.16.4/lodash.min.js"></script> 

只要改变filteromitBy

  var result = _.omitBy(data, function(value, key) { return !key.startsWith("a"); }) 

这是一个使用lodash 4.x的例子:

 var data = { "aaa":111, "abb":222, "bbb":333 }; var result = _.pickBy(data, function(value, key) { return key.startsWith("a"); }); console.log(result); // Object {aaa: 111, abb: 222} 
 <script src="ajax/libs/lodash.js/4.13.1/lodash.min.js"></script> <strong>Open your javascript console to see the output.</strong>