js对象属性名驼峰式转下划线的实例代码


Posted in Javascript onSeptember 17, 2020

一、题目示例:

思路:

1、匹配属性名字符串中的大写字母和数字

2、通过匹配后的lastIndex属性获取匹配到的大写字母和数字的位置

3、判断大写字母的位置是否为首位置以及lastIndex是否为0,为0则表示匹配结束

4、将存放位置的数组进行从小到大排序,排序后将属性名按照字符串的slice方法切割并使用下划线重组

5、遍历对象的属性名并使用函数改变为新的命名,从新赋值到新的对象上(也可以使用改变对象的ES6新语法)

6、注意,每次在调用函数后,需要清空之前存放位置的数组

js对象属性名驼峰式转下划线的实例代码

二、实现代码

let obj = {Id1: 1, idName1: 2, idAgeName1: 3};
let arr = []
function strReplace(str) {
  const UP_CASE_REG =/[A-Z]/g;
  const NUMBER_REG=/[A-Za-z][\d]/g
  let newstr = ""
  getIndex(UP_CASE_REG, str)
  getIndex(NUMBER_REG, str)
  arr.sort((a,b)=> a-b )
  for(let i = 0;i < arr.length; i ++) {
    if(i === 0) {
      newstr += str.slice(0,arr[i]) + "_"
    }
    else {
      newstr += str.slice(arr[i-1],arr[i]) + "_"
    }
  }
  newstr += str.slice(arr[arr.length-1])
  return newstr.toLowerCase()
}
function getIndex(reg, str) {
  do{
    reg.test(str)
    if(reg.lastIndex !== 0 && reg.lastIndex-1 !== 0){//reg.lastIndex-1 !== 0判断首字母是否大写
      arr.push(reg.lastIndex-1)
    }
  }while(reg.lastIndex > 0)
}
 
function strAllReplace(obj) {
  let newObj = {}
  Object.entries(obj).forEach(([key, value]) =>
  {
   newObj[strReplace(key)] = value
   arr = []
  })
  return newObj
}
console.log(strAllReplace(obj))//{id_1: 1, id_name_1: 2, id_age_name_1: 3}

js对象属性名驼峰式转下划线的实例代码

补充知识:JavaScript 对象部署 Iterator 接口

如下所示:

const name = {
      first:"hello",
      last:"world",
      fullname: "hello world"
    }

方式一、Object.keys

for (var i of Object.keys(name)) {
        console.log(i,"-",name[i])
      }

js对象属性名驼峰式转下划线的实例代码

方法二、Object.keys + Generator

function *map(item) {
      for (var i of Object.keys(item)) {
        yield [i,item[i]]
      }
    }
    for(var [key, value] of map(name)) {
      console.log(key,"-",value)
    }

js对象属性名驼峰式转下划线的实例代码

注:generator函数中不能使用箭头函数

例:

*map = (item) => {
      for (var i of Object.keys(item)) {
        yield [i,item[i]]
      }
    }

js对象属性名驼峰式转下划线的实例代码

以上这篇js对象属性名驼峰式转下划线的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery+ajax实现顶一下,踩一下效果
Jul 17 Javascript
js实现拉伸拖动iframe的具体代码
Aug 03 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
Javascript中的getUTCHours()方法使用详解
Jun 10 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
微信小程序实现留言板功能
Nov 02 Javascript
Nuxt.js 数据双向绑定的实现
Feb 17 Javascript
详解JS实现简单的时分秒倒计时代码
Apr 25 Javascript
vue组件vue-esign实现电子签名
Apr 21 Vue.js
详细分析JavaScript中的深浅拷贝
Sep 17 #Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 #Javascript
原生js+css实现tab切换功能
Sep 17 #Javascript
vue使用screenfull插件实现全屏功能
Sep 17 #Javascript
Vue使用screenfull实现全屏效果
Sep 17 #Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
Sep 17 #Javascript
JavaScript编码小技巧分享
Sep 17 #Javascript
You might like
用header 发送cookie的php代码
2007/03/16 PHP
PHP令牌 Token改进版
2008/07/18 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
python在地图上画比例的实例详解
2020/11/13 Python
Python 实现集合Set的示例
2020/12/21 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
护士实习自我鉴定
2013/10/22 职场文书
新闻学毕业生自荐信
2013/11/15 职场文书
求职个人评价范文
2014/04/09 职场文书
中文专业自荐书
2014/06/29 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
党员检讨书范文
2014/12/27 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
Pandas数据类型之category的用法
2021/06/28 Python
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android