前端提交json对象前格式化对象数据和对象名称的方法
2022-12-30 14:15 Lecone.JY.HU 阅读(172) 评论(0) 编辑 收藏 举报1.格式化json对象名称,如把名称连接使用“_”剔除。
const renameFun = (obj) => { let toString = Object.prototype.toString; if (toString.call(obj) === '[object Array]') { for (let i = 0; i < obj.length; i++) { renameFun(obj[i]) } } else if (toString.call(obj) === '[object Object]') { for (let _key in obj) { if (toString.call(obj[_key]) === '[object Array]') { renameFun(obj[_key]) if (_key.indexOf('_')) { obj[_key.replace(/_/g, '')] = obj[_key]; delete obj[_key]; } } else { if(obj[_key]==''){ delete obj[_key]; }else{ if (_key.indexOf('_')) { obj[_key.replace(/_/g, '')] = obj[_key]; delete obj[_key]; } } } } } };
2.json删除值为“”或空值的对象,如 user={username:"1",age:""},操作后为:user={username:"1"}。
//遍历删除对象中的空值属性 const delNullProperty=(obj)=>{ for( let i in obj ){//遍历对象中的属性 if(obj[i] === undefined || obj[i] === null || obj[i] === ""){//首先除去常规空数据,用delete关键字 delete obj[i] }else if(obj[i].constructor === Object){//如果发现该属性的值还是一个对象,再判空后进行迭代调用 if(Object.keys(obj[i]).length === 0) delete obj[i]//判断对象上是否存在属性,如果为空对象则删除 delNullProperty(obj[i]) }else if(obj[i].constructor === Array){//对象值如果是数组,判断是否为空数组后进入数据遍历判空逻辑 if( obj[i].length === 0 ){//如果数组为空则删除 delete obj[i] }else{ for( let index = 0 ; index < obj[i].length ; index++){//遍历数组 if(obj[i][index] === undefined || obj[i][index] === null || obj[i][index] === "" || JSON.stringify(obj[i][index]) === "{}" ){ obj[i].splice(index,1)//如果数组值为以上空值则修改数组长度,移除空值下标后续值依次提前 index--//由于数组当前下标内容已经被替换成下一个值,所以计数器需要自减以抵消之后的自增 } if(obj[i].constructor === Object){//如果发现数组值中有对象,则再次进入迭代 delNullProperty(obj[i]) } } } } } }