I wrote the function below to return all keys in an object that match a specific pattern. It seems really round-about because there\'s no filter function in lodash for objects,
Here's a succinct way to do this with lodash - reduce() and set() are your friends.
_.reduce(data, (result, value, key) => key.match(pattern) ?
_.set(result, key, value) : result, {});
You can use pickBy
from lodash to do this. (https://lodash.com/docs#pickBy)
This example returns an object with keys that start with 'a'
var object = { 'a': 1, 'b': '2', 'c': 3, 'aa': 5};
o2 = _.pickBy(object, function(v, k) {
return k[0] === 'a';
});
o2 === {"a":1,"aa":5}
I don't think you need lodash for this, I would just use Object.keys
, filter for matches then reduce back down to an object like this (untested, but should work):
export function keysThatMatch (pattern) {
return (data) => {
return Object.keys(data).filter((key) => {
return key.match(pattern);
}).reduce((obj, curKey) => {
obj[curKey] = data[curKey];
return obj;
});
}
}