如何用Ramda移除含动态键对象中的空值键值对
解决Ramda移除对象中null/undefined/空数组键值对的问题
你原有代码失效的核心原因是:R.isEmpty不能接收null或undefined作为参数,处理这类值时会直接抛出错误,导致整个过滤逻辑中断,无法正常移除目标键值对。
下面是几个可行的解决方案:
方案一:安全的组合判断函数
先判断值是否为null/undefined,再检查是否为空结构,避免R.isEmpty报错:
const newObj = R.reject( R.either(R.isNil, val => !R.isNil(val) && R.isEmpty(val)) )(sizes.addon_sizes);
方案二:直观的箭头函数写法
用箭头函数直接组合判断逻辑,可读性更强:
const newObj = R.reject(val => { return R.isNil(val) || R.isEmpty(val); })(sizes.addon_sizes);
方案三:反向过滤(推荐)
通过定义"有效值"的判断规则,用filter保留符合要求的键值对:
const isValid = R.allPass([R.complement(R.isNil), R.complement(R.isEmpty)]); const newObj = R.filter(isValid)(sizes.addon_sizes);
以上方案执行后,都会得到预期结果:
{ "1": ["a", "b"], "2": ["c"] }
内容的提问来源于stack exchange,提问作者Maddy
相关产品推荐
相关产品推荐

