如何用Lodash移除对象中空数组属性,保留布尔值与整数?
移除对象中空数组属性,保留整数与布尔值
问题背景
给定对象:
const objectExample = { id: 2132131, title: 'Some title', tags: [], isFree: true, }
需要移除值为空数组的属性(如tags),但保留id(整数)和isFree(布尔值)这类属性。
尝试用_.omitBy(objectExample, _.isEmpty)时,因_.isEmpty对整数、布尔值也返回true,导致目标属性被误删;尝试_.omitBy(transformedSession, _.isArray && _.isEmpty)时,仅_.isArray生效,无法过滤空数组。
解决方案
方式1:用_.overEvery组合双条件
Lodash的_.overEvery可以把多个断言函数组合成一个,只有当所有条件都满足时才返回true:
_.omitBy(objectExample, _.overEvery([_.isArray, _.isEmpty]))
这个写法会仅过滤既是数组又是空数组的属性,完美避开整数和布尔值。
方式2:直接写自定义判断函数
如果觉得_.overEvery不够直观,直接用箭头函数写判断逻辑更清晰:
_.omitBy(objectExample, val => _.isArray(val) && _.isEmpty(val))
逻辑和上面完全一致,先判断值是否为数组,再判断是否为空,两个条件都满足才会被移除。
最终结果
执行上述任一代码后,得到的对象为:
{ id: 2132131, title: 'Some title', isFree: true, }
内容的提问来源于stack exchange,提问作者Ania Kowalska
相关产品推荐
相关产品推荐

