我在下面编写了函数,以返回对象中与特定模式匹配的所有键。这似乎是真正的回旋,因为lodash中没有对象的过滤器功能,当您使用它时,所有键都会丢失。这是使用lodash过滤对象键的唯一方法吗?
export function keysThatMatch (pattern) {
return (data) => {
let x = _.chain(data)
.mapValues((value, key) => {
return [{
key: key,
value: value
}]
})
.values()
.filter(data => {
return data[0].key.match(pattern)
})
.zipWith(data => {
let tmp = {}
tmp[data[0].key] = data[0].value
return tmp
})
.value()
return _.extend.apply(null, x)
}
}
我认为您不需要为此,我只需要使用Object.keys
,过滤匹配项,然后将其缩小为这样的对象(未经测试,但应该可以使用):
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;
});
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句