繁体   English   中英

Ramda 删除嵌套的 null 值

[英]Ramda remove nested null values

我想从 object 中删除所有 null 值。 让我们假设:

const data = {
  key1: 'ok',
  key2: null,
  key3: '', // should be removed too
  key4: {
    inner_key1: 'aaa',
    inner_key2: null
  }
}

我做的是这个

const clean = R.reject(R.either(R.isNil, R.isEmpty))

而这项工作:

{"key1":"ok","key4":{"inner_key1":"aaa","inner_key2":null}}

如您所见,除了嵌套对象,inner_key2 存在,应该被过滤掉。

使用 ramda,我怎样才能删除这个嵌套值呢?

创建一个递归 function,它在清理 object 后迭代属性,并对每个属性调用 clean,即 object:

 const { pipe, reject, either, isNil, isEmpty, map, when, is } = R const clean = o => pipe( reject(either(isNil, isEmpty)), map(when(is(Object), clean)) )(o) const data = {"key1":"ok","key2":null,"key3":"","key4":{"inner_key1":"aaa","inner_key2":null}} const result = clean(data) console.log(result)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.js" integrity="sha512-3sdB9mAxNh2MIo6YkY05uY1qjkywAlDfCf5u1cSotv6k9CZUSyHVf4BJSpTYgla+YHLaHG8LUpqV7MHctlYzlw==" crossorigin="anonymous"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM