如何用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>