目的:清除对象中无值的数据unfined,null,[],{},''。出现场景:对于前端空值的定义:如果输入框没有输入任何值,则没有值,但实际上输入框绑定了一个字段,值为undefined或''if没有输入。还有{}、[]、null。letparams={a:1,b:undefined,c:'',d:{},e:[],f:null}后端:空值不应该把值放在参数里。预期的对象是:letparams={a:1}为这种情况构建函数处理functionclearEmptyPro(obj){letcurVal={};让toString=Object.prototype.toString;for(letkeyinobj){letvalue=obj[key];让type=toString.call(value);if(value||type==="[objectNumber]"||type==="[objectBoolean]"){switch(type){case"[objectObject]":if(Object.keys(value).length>0){curVal[key]=value;}休息;case"[objectArray]":if(value.length>0){curVal[key]=value;}休息;默认值:curVal[键]=值;休息;}}}returncurVal;}datatestvaraa={a:[],b:{},c:0,d:1,f:null,g:undefined,h:true,i:false,k:'',l:'ss',m:[1],n:{a:1}};骗子sole.log(clearEmptyPro(aa));//{c:0,d:1,h:true,i:false,l:'ss',m:[1],n:{a:1}}但当数据中的对象或数组中的页面包含空值时,没有办法处理varaa={a:[1,0,false,undefined,null,'',{a:1,c:3}],b:{a:true,b:false,c:'',d:undefined}};console.log(clearEmptyPro(aa));//{a:[1,0,false,undefined,null,'',{a:1,c:3}],b:{a:true,b:false,c:'',d:undefined}}这个时候就需要对每个对象和数据进行处理functionclearEmptyPro(data){letcurVal;让toString=Object.prototype.toString;让dataType=toString.call(data);if(data||dataType==="[objectNumber]"||dataType==="[objectBoolean]"){switch(dataType){case"[objectObject]":if(Object.keys(data).length>0){让momObj={};for(letkeyindata){letvalue=clearEmptyPro(data[key]);让valueType=toString.call(value);valueType===“[对象布尔值]”||valueType==="[对象编号]"||价值?momObj[键]=值:“”;}curVal=momObj;}else{返回;}休息;case"[objectArray]":if(data.length>0){让momValue=[];data.forEach((e)=>{letvalue=clearEmptyPro(e);letvalueType=toString.call(value);valueType==="[objectBoolean]"||valueType==="[objectNumber]"||值?momValue.push(value):"";});momValue.length>0?curVal=momValue:"";}else{返回;}休息;案例“[objectBoolean]”:默认值:curVal=data;休息;}}别的{返回;}returncurVal;}数据测试varaa={a:[1,0,false,undefined,null,'',{a:1,c:3}],b:{a:true,b:false,c:'',d:undefined}}console.log(clearEmptyPro(aa));//{a:[1,0,false,{a:1,c:3}],b:{a:true,b:错误的}}
