通过Lodash中的键过滤对象

托马斯·里德

我在下面编写了函数,以返回对象中与特定模式匹配的所有键。这似乎是真正的回旋,因为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)
  }
}
罗伯·M

我认为您不需要为此,我只需要使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章