首页 > 编程语言 >JavaScript 数据驼峰结构转下划线结构

JavaScript 数据驼峰结构转下划线结构

时间:2024-03-16 15:00:52浏览次数:20  
标签:下划线 驼峰 true JavaScript address var null data name

// 数据转换
function recursionFunc (data) {
  if (data && typeof (data) == 'object') {
    var obj
    if (Array.isArray(data)) {
      obj = []
      for (var item of data) {
        obj.push(recursionFunc(item))
      }
    } else {
      obj = {}
      for (var key in data) {
        var newKey = changeKey(key) // 字符串转换
        obj[newKey] = recursionFunc(data[key])
      }
    }
    return obj
  } else {
    return data
  }
}

// 字符串转换
function changeKey (str) {
  var arr = [...str]
  var arrCopy = [...str]
  var index = 0
  var length = arrCopy.length
  for (var i of arrCopy) {
    var front = index - 1 >= 0 ? arrCopy[index - 1].charCodeAt(0) : null
    var behind = index + 1 < length ? arrCopy[index + 1].charCodeAt(0) : null
    var num = i.charCodeAt(0)

    if (num >= 65 && num <= 90) {
      if (front && (front >= 97 && front <= 122 || behind && behind >= 97 && behind <= 122)) {
        arr[index] = '_' + arr[index].toLowerCase()
      } else {
        arr[index] = arr[index].toLowerCase()
      }
    }
    index++
  }
  return arr.join('')
}

使用:var result = recursionFunc(data)

var data = {
  createTime: '2024-12-11 23:09:06',
  updateTime: null,
  aCar: [
    {
      fillType: { code: 'HH', desc: '我的状态很好 aBC' },
      isFavorite: true,
      memberList: [
        {
          nameText: '高院长',
          age: 32,
          phoneNumber: '18564768765',
          friendsList: [
            {
              firstName: '三',
              familyNmae: '张',
              address: null
            },
            {
              firstName: '四',
              familyNmae: '李',
              address: null
            }
          ]
        }
      ]
    },
    {
      fillType: { code: 'GOOD', desc: 'fasfdsa 范德萨范范德萨范德萨 dfsa' },
      isFavorite: false,
      memberList: [
        {
          nameText: '刘主任',
          age: 28,
          phoneNumber: '18564768765',
          friendsList: [
            {
              firstName: '三',
              familyNmae: '张',
              address: '广东省深圳市南山区南头街道建工村28号 A602'
            },
            {
              firstName: '四',
              familyNmae: '李',
              address: null
            }
          ]
        }
      ]
    },
    {
      fillType: { code: 'BAD', desc: '让我去让我去' },
      isFavorite: null,
      memberList: [
        {
          nameText: '王科长',
          age: 45,
          phoneNumber: '13299999999',
          friendsList: [
            {
              firstName: '五',
              familyNmae: '吕',
              address: ''
            },
            {
              firstName: '六',
              familyNmae: '金',
              address: null
            }
          ]
        }
      ]
    },
  ],
  otherID: '555555555555',
  ID: '324242432432342',
  id: '908897878797787',
  IdNumber: '766766666666',
  IDNumber: '887777777777',
  myIDNumber: '444445555555',
  wKK: [
  ],
  waitForMe: {
  },
  user: {
    nickName: '哇咔咔',
    orderList: [{
      orderId: '12345',
      orderName: '剪刀',
      vipPirce: '32.2',
      price: '40'
    }],
    phone: '17654365467',
    searchCount: true,
    size: 10,
    total: 2,
    countId: null,
    current: 1,
    hitCount: false,
    maxLimit: null,
    optimizeCountSql: true,
    orders: [],
    pages: 1
  },
  a1: '4767373633',
  tearch: true,
  countNumber: 5,
  holdStatus: 'isBack',
  errorMsg: "",
  extra: null,
  isSuccess: true,
  msg: "ok",
  path: null,
  timestamp: 1710472476396,
}

var result = recursionFunc(data)

console.log('result:', result)

计算结果 result:

{
  "create_time": "2024-12-11 23:09:06",
  "update_time": null,
  "a_car": [
    {
      "fill_type": { "code": "HH", "desc": "我的状态很好 aBC" },
      "is_favorite": true,
      "member_list": [
        {
          "name_text": "高院长",
          "age": 32,
          "phone_number": "18564768765",
          "friends_list": [
            { "first_name": "三", "family_nmae": "张", "address": null },
            { "first_name": "四", "family_nmae": "李", "address": null }
          ]
        }
      ]
    },
    { "fill_type": { "code": "GOOD", "desc": "fasfdsa 范德萨范范德萨范德萨 dfsa" }, "is_favorite": false, "member_list": [{ "name_text": "刘主任", "age": 28, "phone_number": "18564768765", "friends_list": [{ "first_name": "三", "family_nmae": "张", "address": "广东省深圳市南山区南头街道建工村28号 A602" }, { "first_name": "四", "family_nmae": "李", "address": null }] }] },
    { "fill_type": { "code": "BAD", "desc": "让我去让我去" }, "is_favorite": null, "member_list": [{ "name_text": "王科长", "age": 45, "phone_number": "13299999999", "friends_list": [{ "first_name": "五", "family_nmae": "吕", "address": "" }, { "first_name": "六", "family_nmae": "金", "address": null }] }] }],
  "other_id": "555555555555",
  "id": "908897878797787",
  "id_number": "887777777777",
  "my_id_number": "444445555555",
  "w_kk": [],
  "wait_for_me": {},
  "user": {
    "nick_name": "哇咔咔",
    "order_list": [{ "order_id": "12345", "order_name": "剪刀", "vip_pirce": "32.2", "price": "40" }],
    "phone": "17654365467",
    "search_count": true,
    "size": 10,
    "total": 2,
    "count_id": null,
    "current": 1,
    "hit_count": false,
    "max_limit": null,
    "optimize_count_sql": true,
    "orders": [],
    "pages": 1
  },
  "a1": "4767373633",
  "tearch": true,
  "count_number": 5,
  "hold_status": "isBack",
  "error_msg": "",
  "extra": null,
  "is_success": true,
  "msg": "ok",
  "path": null,
  "timestamp": 1710472476396
}

 

标签:下划线,驼峰,true,JavaScript,address,var,null,data,name
From: https://www.cnblogs.com/liuyongfa/p/18077082

相关文章

  • JavaScript 进阶(一)
    一、作用域作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问。作用域分为:局部作用域、全局作用域。1.1局部作用域局部作用域分为函数作用域和块作用域。1.函数作用域:在函数内部声明的变量只能在函数内部被访问,外部无法......
  • idea项目mapper.xml中的SQL语句黄色下划线去除
    问题描述当我们使用idea开发java项目时,经常会与数据库打交道,一般在使用mybatis的时候需要写一大堆的mapper.xml以及SQL语句,每当写完SQL语句的时候总是有黄色下划线,看着很不舒服。解决方案:修改idea的配置Editor->Inspections打开配置页面后,在中间视窗找到sql的>点击下......
  • JavaScript逆向之iwencai请求头参数加密过程解析
    iwencai网站实战url:http://iwencai.com/unifiedwap/home/index打开开发者工具,在搜索框中随便输入关键词,看流量包。(如果想将开发者工具的位置进行变换的,可以点击三个点进行切换)只有一条数据包,看看请求数据和响应数据。请求头中有一个特殊的Hexin-V,它的值与Cookie中的v的值......
  • JavaScript字符串和时间处理随笔
    2024-3-15记事1//待处理数组2letarr=[];3//筛选数组某个字段(某一列)4letjieshus=arr.railways.map(item=>item.jieshu);5//获取当前时间时间戳6letnow=Date.now();7//获取当前时间并转化成指定格式的日期字符串8letdate=newDate().toLo......
  • 【你也能从零基础学会网站开发】Web建站之javascript入门篇 Array数组
    ......
  • 【你也能从零基础学会网站开发】Web建站之javascript入门篇 History对象与Location对
    ......
  • 【你也能从零基础学会网站开发】Web建站之javascript入门篇 认识JavaScript中的Cookie
    ......
  • 身份证查询-身份认证-javascript实名认证接口
    翔云身份证实名认证接口将与网络平台携手共筑信息安全防线,守护每一笔交易的真实可信,助力您的企业在数字化浪潮中稳健前行!以下是javascript语言调用翔云身份证实名认证API的代码:varform=newFormData();form.append("img","/9j");form.append("key","M***********g");fo......
  • 【Javascript】 Promise 对象(二)
    Promise.all()Promise.all()方法用于将多个Promise实例,包装成一个新的Promise实例。constp=Promise.all([p1,p2,p3]);上面代码中,Promise.all()方法接受一个数组作为参数,p1、p2、p3都是Promise实例,如果不是,就会先调用下面讲到的Promise.resolve方法,将参数转为Pr......
  • 【JavaScript】闭包
    闭包的引入我们知道,变量根据作用域的不同分为两种:全局变量和局部变量。函数内部可以访问全局变量和局部变量。函数外部只能访问全局变量,不能访问局部变量。当函数执行完毕,本作用域内的局部变量会销毁。比如下面这样的代码:functionfoo(){leta=1;}foo(......