更新:
从没有嵌套对象的对象中删除未定义、空和空字符串
_.omitBy(object, (v) => _.isUndefined(v) || _.isNull(v) || v === '');
对于嵌套对象,您可以创建一个递归函数
它将删除任何级别的空对象、空数组、null、未定义、空字符串...
removeEmpty(obj) {
let finalObj = {};
Object.keys(obj).forEach((key) => {
if (obj[key] && typeof obj[key] === 'object') {
const nestedObj = removeEmpty(obj[key]);
if (Object.keys(nestedObj).length) {
finalObj[key] = nestedObj;
}
} else if (obj[key] !== '' && obj[key] !== undefined && obj[key] !== null) {
finalObj[key] = obj[key];
}
});
return finalObj;
}
例子:
const obj = {
a: '',
aa: null,
aaa: undefined,
aaaa: 'aaaa',
aaaaa: 0,
aaaaaa: 1,
aaaaaaa: 2,
aaaaaaaa: true,
aaaaaaaaa: false,
emptyObj: {},
emptyArray: [],
array: [
{
a: '',
aa: null,
aaa: undefined,
aaaa: 'aaaa',
aaaaa: 0,
aaaaaa: 1,
aaaaaaa: 2,
aaaaaaaa: true,
aaaaaaaaa: false,
emptyObj: {},
emptyArray: [],
obj: {
a: '',
aa: null,
aaa: undefined,
aaaa: 'aaaa',
aaaaa: 0,
aaaaaa: 1,
aaaaaaa: 2,
aaaaaaaa: true,
aaaaaaaaa: false,
emptyObj: {},
emptyArray: [],
},
},
{
a: '',
aa: null,
aaa: undefined,
aaaa: 'aaaa',
aaaaa: 0,
aaaaaa: 1,
aaaaaaa: 2,
aaaaaaaa: true,
aaaaaaaaa: false,
emptyObj: {},
emptyArray: [],
obj: {
a: '',
aa: null,
aaa: undefined,
aaaa: 'aaaa',
aaaaa: 0,
aaaaaa: 1,
aaaaaaa: 2,
aaaaaaaa: true,
aaaaaaaaa: false,
emptyObj: {},
emptyArray: [],
},
},
],
b: {
a: '',
aa: null,
aaa: undefined,
aaaa: 'aaaa',
aaaaa: 0,
aaaaaa: 1,
aaaaaaa: 2,
aaaaaaaa: true,
aaaaaaaaa: false,
emptyObj: {},
emptyArray: [],
c: {
a: '',
aa: null,
aaa: undefined,
aaaa: 'aaaa',
aaaaa: 0,
aaaaaa: 1,
aaaaaaa: 2,
aaaaaaaa: true,
aaaaaaaaa: false,
emptyObj: {},
emptyArray: [],
},
},
};
const finalObj = removeEmpty(obj);
console.log('finalObj After remove', finalObj);