function removeEmpty(obj) {
const finalObj = {};
Object.keys(obj).forEach((key) => {
if (obj[key] && typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
const nestedObj = this.removeEmpty(obj[key]);
if (Object.keys(nestedObj).length) {
finalObj[key] = nestedObj;
}
} else if (Array.isArray(obj[key])) {
if (obj[key].length) {
obj[key].forEach((x) => {
const nestedObj = this.removeEmpty(x);
if (Object.keys(nestedObj).length) {
finalObj[key] = finalObj[key] ? [...finalObj[key], nestedObj] : [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);
结果