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中的parseInt和parseFloat区别
Jul 12 Javascript
Jquery中children与find之间的区别详细解析
Nov 29 Javascript
node.js中的path.resolve方法使用说明
Dec 08 Javascript
JavaScript数组常用方法
Mar 02 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
jQuery获取file控件中图片的宽高与大小
Aug 04 Javascript
AngularJS使用ng-repeat指令实现下拉框
Aug 23 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
JS实现简单获取最近7天和最近3天日期的方法
Apr 18 Javascript
layui问题之模拟select点击事件的实例讲解
Aug 15 Javascript
vue点击自增和求和的实例代码
Nov 06 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 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
Knockoutjs快速入门(经典)
2012/12/24 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
Python 3中的yield from语法详解
2017/01/18 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python多线程获取返回值代码实例
2020/02/17 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
日期和时间问题
2015/01/04 面试题
奥巴马演讲稿
2014/01/08 职场文书
家长会演讲稿范文
2014/01/10 职场文书
电工工作职责范本
2014/02/22 职场文书
期中考试反思800字
2014/05/01 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
收款委托书
2014/10/14 职场文书
2015年导购员工作总结
2015/04/25 职场文书
行政处罚告知书
2015/07/01 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
幼儿园教学反思范文
2016/03/02 职场文书