一、题目示例:
思路:
1、匹配属性名字符串中的大写字母和数字
2、通过匹配后的lastIndex属性获取匹配到的大写字母和数字的位置
3、判断大写字母的位置是否为首位置以及lastIndex是否为0,为0则表示匹配结束
4、将存放位置的数组进行从小到大排序,排序后将属性名按照字符串的slice方法切割并使用下划线重组
5、遍历对象的属性名并使用函数改变为新的命名,从新赋值到新的对象上(也可以使用改变对象的ES6新语法)
6、注意,每次在调用函数后,需要清空之前存放位置的数组
二、实现代码
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}
补充知识: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]) }
方法二、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) }
注:generator函数中不能使用箭头函数
例:
*map = (item) => { for (var i of Object.keys(item)) { yield [i,item[i]] } }
以上这篇js对象属性名驼峰式转下划线的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月19日
2024年11月19日
- 许秋怡.1995-电影少女【丽音唱片】【FLAC分轨】
- 【中国艺术歌曲典藏】温雅欣《她比烟花寂寞》紫银合金SQCD【低速原抓WAV+CUE】
- 张国荣《FinalEncounter》头版限量编号MQA-UHQ[低速原抓WAV+CUE].
- 发烧萨克斯-雪国之春(SRS+WIZOR)[原抓WAV+CUE]
- 王铮亮《慢人理论》[320K/MP3][175.31MB]
- 王铮亮《慢人理论》[FLAC/分轨][524.11MB]
- 陈致逸《赴梦之约 游戏主题原声音乐》[320K/MP3][35.82MB]
- 沈文程.1998-历年畅销歌曲精选3CD旧情也绵绵【乡城】【WAV+CUE】
- 群星.2022-福茂巨星·时空之轮日本唱片志系列DISC1黄舒骏-为你疯狂【福茂】【WAV+CUE】
- 群星.2022-福茂巨星·时空之轮日本唱片志系列DISC2范晓萱-RAIN【福茂】【WAV+CUE】
- 王闻-《男人四十4》[正版CD低速原抓WAV+CUE]
- 青燕子-八只眼演唱组《爱心》[WAV+CUE]
- 祁露想着你的好》WAV+CUE
- 陈致逸《赴梦之约 游戏主题原声音乐》[FLAC/分轨][159.96MB]
- 贵族音乐《睡眠自然流水声 ASMR白噪音背景音》[320K/MP3][155.72MB]