第四天

  • 题目来源:前端每日知识3+1

Javascript题目

题目:写一个方法把下划线命名转成大驼峰命名(js)

问题解答

解题思路

  • 写一个方法把下划线命名转成大驼峰命名

正则

  1. // 大驼峰命名
  2. function tuoF(str) {
  3. // let reg = /(?:[_])([a-z])/g // 去除原子组?:
  4. // return str.replace(reg, (p0, p1) => p1.toUpperCase()); //排除
  5. let reg = /(?<=[\_])([a-z])/g
  6. return str.replace(reg, (p0, p1) => p1.toUpperCase()).replace(/\_/g,''); //排除
  7. }
  8. console.log(tuoF('a_da_cds'));

循环方法

  1. // 大驼峰命名
  2. function tuoF(str) {
  3. let result = [];
  4. [...str].forEach(function (e, i, a) {
  5. if (e === '_') { a[i + 1] = a[i + 1].toUpperCase(); }
  6. result.push(a[i])
  7. });
  8. return result.join('').replace(/\_*/g, '');
  9. }
  10. console.log(tuoF('hello_world')); // helloWorld

reduce方法

  1. function tuoF(str) {
  2. if (str.split('_').length == 1) return;
  3. str.split('_').reduce((a, b) => {
  4. return a + b.substr(0, 1).toUpperCase() + b.substr(1) //reduce方法累加函数
  5. })
  6. }
  7. //缩短形式
  8. function tuoF(str) {
  9. if (str.split('_').length == 1) return;
  10. return str.split('_').reduce((a, b) => a + b.substr(0, 1).toUpperCase() + b.substr(1))
  11. }
  12. console.log(tuoF('hello_world_')); // helloWorld

扩展

  1. toUpperCase的意思是将所有的英文字符转换为大写字母
  2. toLowerCase的意思是将所有的英文字符转换为小写字母
  3. reduce对数组中的每个元素执行一个由我们提供的reduce函数(升序执行),将其结果汇总为单个返回值
  4. [...str] 使用的是es6中的解构方法 将字符串转换成数组