- 使用场景:提交表单的时候去掉一些无用的参数
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) { // 属性值不为'',null,undefined才加入新对象里面(去掉'',null,undefined) 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)) ) { // 属性值为JSON时 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))) // {"b":123,"f":[1,2,3],"h":{"x":1},"i":false,"j":true,"k":[{"name":1}]}
01-26
887
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)