- 使用场景:提交表单的时候去掉一些无用的参数
function removeEmptyField(obj) {
var newObj = {}
if (typeof obj === 'string') {
obj = JSON.parse(obj)
}
if (obj instanceof Array) {
newObj = []
}
if (obj instanceof Object) {
for (var attr in obj) {
if (obj.hasOwnProperty(attr) && obj[attr] !== '' && obj[attr] !== null && obj[attr] !== undefined) {
if (obj[attr] instanceof Object) {
if(JSON.stringify(obj[attr]) === '{}' || JSON.stringify(obj[attr]) === '[]') {
continue
}
newObj[attr] = removeEmptyField(obj[attr])
} else if (
typeof obj[attr] === 'string' &&
((obj[attr].indexOf('{') > -1 && obj[attr].indexOf('}') > -1) ||
(obj[attr].indexOf('[') > -1 && obj[attr].indexOf(']') > -1))
) {
try {
var attrObj = JSON.parse(obj[attr])
if (attrObj instanceof Object) {
newObj[attr] = removeEmptyField(attrObj)
}
} catch (e) {
newObj[attr] = obj[attr]
}
} else {
newObj[attr] = obj[attr]
}
}
}
}
return newObj
}
const testObj = {
a: '',
b: 123,
c: null,
d: undefined,
e: [],
f: [1,2,3,'',null],
g: {},
h: {x:1,y:'',z:null},
i:false,
j:true,
k:[{name:1},{}]
}
console.log(JSON.stringify(removeEmptyField(testObj)))
原文地址:https://www.cnblogs.com/chifung/p/13600044.html