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 相关文章推荐
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
Apr 02 Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
Javascript的闭包详解
Dec 26 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
ECharts仪表盘实例代码(附源码下载)
Feb 18 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
Jul 12 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
Feb 26 Javascript
vue3.0中的双向数据绑定方法及优缺点
Aug 01 Javascript
React实现动效弹窗组件
Jun 21 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
浅析php header 跳转
2013/06/17 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
Python中查看文件名和文件路径
2017/03/31 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
基于python实现聊天室程序
2018/07/27 Python
python调用百度语音REST API
2018/08/30 Python
Flask之请求钩子的实现
2018/12/23 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
个人委托书范本
2014/04/02 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
单位租房协议书样本
2014/10/30 职场文书
民主生活会汇报材料
2014/12/15 职场文书
交通事故责任认定书
2015/08/06 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
深入浅析React中diff算法
2021/05/19 Javascript
python中取整数的几种方法
2021/11/07 Python