我的代码:
s-t
let obj = {
x: {
a: false,
b: 2,
c: ''
},
y: ''
}
let result = _.omitBy(obj, (value, key) => {
if (value === null || value === undefined || value === '') {
return key;
}
});
console.log(result)
输出:{x:{a:false,b:2,c:''}}
预期结果:{x:{a:false,b:2}}
答案 0 :(得分:0)
这是不使用lodash的解决方案。您可以获取对象的Object.entries()
和filter
所有具有falsy
值的项目。然后使用reduce
将过滤后的entries
转换回一个对象。如果value
是object
,则递归调用removeFalsy
函数以删除嵌套对象中的虚假值。这适用于任何级别的嵌套
function removeFalsy(obj) {
if (typeof obj === "object")
return Object.entries(obj)
.filter(([k, v]) => ![undefined, null, ''].includes(v))
.reduce((r, [key, value]) => ({ ...r, [key]: removeFalsy(value) }), {})
else
return obj
}
let obj = {
x: {
a: false,
b: 2,
c: null
},
y: ''
}
console.log(removeFalsy(obj))