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 相关文章推荐
javascript实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
JS常用函数使用指南
Nov 23 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
javascript实现仿IE顶部的可关闭警告条
May 05 Javascript
关于List.ToArray()方法的效率测试
Sep 30 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
Vue AST源码解析第一篇
Jul 19 Javascript
简单的网页广告特效实例
Aug 19 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
从零开始封装自己的自定义Vue组件
Oct 09 Javascript
vue实现鼠标经过动画
Oct 16 Javascript
ReactRouter的实现方法
Jan 25 Javascript
详细分析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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
php简单统计中文个数的方法
2016/09/30 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
python字典DICT类型合并详解
2017/08/17 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
Python语法分析之字符串格式化
2019/06/13 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
三项教育活动实施方案
2014/03/30 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
公司授权委托书样本
2014/09/15 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
学校重阳节活动总结
2015/03/24 职场文书
奖励申请报告范文
2015/05/15 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
V Rising 服务器搭建图文教程
2022/06/16 Servers