• 浏览网页时看到一个把字符串偶数位转化为大写字母的问题,小小白也来班门弄斧尝试一下。


    首先,看了那位朋友是这么写的,继续往下看

     1  function toWeirdCase(string){
     2     //先判断字符串是否是单个单词组成
     3     if(string.indexOf(" ")==-1){//单个单词组成的字符串
     4        var arr1=string.split("");
     5        for(var i=0;i<arr1.length;i++){
     6             //偶数位的字母变成大写
     7            if(i%2==0){
     8                arr1[i]=arr1[i].toUpperCase();
     9            }else{
    10                continue;
    11            }
    12        }
    13        return  arr1.join("");
    14     }else{//多个单词组成的字符串,中间有空格
    15          var str2 = "";
    16          //把字符串由空格分割成数组
    17          var arr2 = string.split(' ');
    18          var arr3 = [];
    19          for(var j=0;j<arr2.length;j++){
    20             //把arr2的每一项分割成数组,进行操作
    21              arr3 = arr2[j].split("");
    22              for(var k=0;k<arr3.length;k++){
    23                 if(k%2==0){
    24                    arr3[k]=arr3[k].toUpperCase();
    25                 }else{
    26                    continue;
    27                 }
    28              }
    29             //str2是arr2的某一项
    30              str2=arr3.join("");
    31              arr2[j]=str2;
    32          }
    33          return arr2.join(" ");
    34     }
    35 } 

    虽然略感繁琐但思路还算清晰,然后自己尝试了一下,写出来是这样的

    function toUpCase(string) {
    var arr = string.split('');
    var i;
    for(i=0;i<arr.length;i+=2){
    (function(num){
    arr[i] = arr[i].toUpperCase();
    return num;
    })(i)
    }
    return arr.join("");
    }

    蒽,写完对比了一下,然后本小白一脸兴奋有木有,于是上网搜了一下,被各种大神把脸打的啪啪啪,且往下看

    对,这是第一个

    1 function toWeirdCase(string){
    2   return string.split(' ').map(function(word){
    3     return word.split('').map(function(letter, index){
    4       return index % 2 == 0 ? letter.toUpperCase() : letter.toLowerCase()
    5     }).join('');
    6   }).join(' ');
    7 }

    然后,这是第二个
    function toWeirdCaseCharacter(chr, index)
    {
      return index % 2 ? chr.toLowerCase() : chr.toUpperCase();
    }
    
    function toWeirdCaseWord(word){
      return word.split("").map(toWeirdCaseCharacter).join("");
    }
    
    function toWeirdCase(string){
      return string.split(" ").map(toWeirdCaseWord).join(" ");
    }
    再看第三个
    function toWeirdCase(string){
      return string.replace(/(\w{1,2})/g,(m)=>m[0].toUpperCase()+m.slice(1))
    }
    大家看到了吧,尤其第三个,对一个正则都用的一塌糊涂的小白来说简直无情,道阻且长,前端的路还要继续前行。
    本着交流学习的想法,希望路过的大神也都不吝赐教,分享自己的宝贵代码。
    如果您有任何问题,欢迎下方评论,会在看到的第一时间回复您。
  • 相关阅读:
    win10以管理员身份打开hosts文件并编辑保存
    Thrift 初探
    MySQL 批量插入或更新数万条数据
    C# 退出应用程序的几种方法
    Antd VUE中table子表同时只展开一个子信息的说明
    C++ 中的 volatile,atomic 及 memory barrier
    C++计算代码执行时间
    css学习笔记
    剑指 Offer II 021. 删除链表的倒数第 n 个结点
    剑指 Offer II 026. 重排链表
  • 原文地址:https://www.cnblogs.com/kawask/p/6062636.html
Copyright © 2020-2023  润新知