代码改变世界

前端提交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])
                  }
              }
          }
      }
  }
}

 

的风格风格