首页 > 其他分享 >前端提交json对象前格式化对象数据和对象名称的方法

前端提交json对象前格式化对象数据和对象名称的方法

时间:2022-12-30 14:36:47浏览次数:35  
标签:index obj 对象 else json key 格式化 delete

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])
                  }
              }
          }
      }
  }
}

 

标签:index,obj,对象,else,json,key,格式化,delete
From: https://www.cnblogs.com/lecone/p/17014796.html

相关文章

  • 海纳百川,华为云对象存储服务OBS给你无限可能
    ​随着企业数字化转型的进程加快,企业数据上云已经是互联网时代下不可阻挡的趋势,但是由于缺乏有效的管理方法和措施,在实际操作过程中大量数据无法进行分析与处理,而且随着数据......
  • 华为云OBS对象存储,一站式解决企业数据存储难题
    ​在大数据时代下,很多企业开始逐步向着云计算、人工智能转变,不断推进企业上云。而企业上云路上最大的“拦路虎”之一就是“数据存储”。全球数据的爆炸式增长及现代业务平台......
  • java list集合存储学生对象3种遍历方式
        ......
  • list转json tree的工具类
    packagecom.glodon.safety.contingency.job;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;i......
  • Qt总结_对象模型_组件parent的理解
    标准C++对象模型在运行时效率方面卓有成效,但是在某些特定问题域下的静态特性就显得捉襟见肘。GUI界面需要同时具有运行时的效率以及更高级别的灵活性。为了解决这一问题,Q......
  • 第五章《类的继承》第5节:对象和引用
    ​Java语言中,引用是一个非常重要的程序元素。引用的作用是操作对象,大部分情况下程序员都必须通过引用来调用对象的属性和方法。5.5.1引用的概念和作用在本书的第4章中曾经介......
  • JSON学习
    1.JSON语法是JavaScript对象表示语法的子集。l 数据在名称/值对中l 数据由逗号分隔l 花括号保存对象l 方括号保存数组JSON 值可以是:l 数字(整......
  • T-SQL 将表打印为 C# 类对象
    declare@TableNamesysname='FM_ResignationApplication'declare@Resultvarchar(max)='///<summary>///'+@TableName+'///</summary>publicclass'+@Tab......
  • JS对象
    声明对象方式对象字面量varobj1={name:'xx',age:88,}newObject()varobj2=newObject()obj2.name='xx'new自定义类functionPerson(){}varobj3......
  • Python 面向对象
    目录Python面向对象方法没有重载方法的动态性私有属性和私有方法(实现封装)@property装饰器属性和方法命名总结Python面向对象方法没有重载在其他语言中,可以定义多个......