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 日期对象Date扩展方法
May 30 Javascript
javascript判断office版本示例
Apr 11 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
JS数组交集、并集、差集的示例代码
Aug 23 Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 Javascript
实现单层json按照key字母顺序排序的示例
Dec 06 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
Jan 08 Javascript
JS实现常见的查找、排序、去重算法示例
May 21 Javascript
基于jQuery的时间戳与日期间的转化
Jun 21 jQuery
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 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中上传大体积文件时需要的设置
2006/10/09 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
window.location.hash 使用说明
2010/11/08 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
详解一个小实例理解js原型和继承
2019/04/24 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python遍历目录的4种方法实例介绍
2015/04/13 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
python实现月食效果实例代码
2019/06/18 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
python实现与redis交互操作详解
2020/04/21 Python
基于Python测试程序是否有错误
2020/05/16 Python
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
草船借箭教学反思
2014/02/03 职场文书
市场营销方案范文
2014/03/11 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
授权委托书格式模板
2014/04/03 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
初三语文教学反思
2016/03/03 职场文书