美文网首页
原生js面试题(要求手写代码)

原生js面试题(要求手写代码)

作者: JuneLau | 来源:发表于2019-07-30 08:38 被阅读0次
    1.用正则和非正则,实现一个字符串转为驼峰

    非正则

     let str = "get-element-by-id";
        function fun1(str) {
          var strArr = str.split("-");
          for (var i = 1; i < strArr.length; i++) {
            var start = strArr[i].charAt(0).toUpperCase();
            var end = strArr[i].slice(1);
            strArr[i] = start + end;
          }
          return strArr.join("");
        }
        console.log(fun1(str));
    

    正则一

      let str = "get-element-by-id";
        function fun1(str) {
          //\w元字符用来匹配单词字符,它等价于"[a-zA-Z0-9]"。
          var reg = /-(\w)/g; //子项()表示子项
          return str.replace(reg, function($0, $1) {
            //$0代表正则整体,replace()方法中的第二个参数若是回调函数,那么这个回调函数中的参数就是匹配成功后的结果
            //若回调函数中有多个参数时,第一个参数代表整个正则匹配结果,第二个参数代表第一个子项
            console.log($0); //-b
            console.log($1); //b
            return $1.toUpperCase();
          });
        }
        console.log(fun1(str));
    

    正则二

     let str = "get-element-by-id";
        var reg = /-\w/g;
        function fun1(str) {
          //\w元字符用来匹配单词字符,它等价于"[a-zA-Z0-9]"。
          return str.replace(reg, function($) {
            //console.log($); //-e -b -i
            return $.slice(1).toUpperCase();
          });
        }
        console.log(fun1(str));
    
    2.判断一个字符串中出现次数最多的字符,统计这个次数
     var str = "asdfssaaasasasasaa";
        var obj = {};
        for (var i = 0; i < str.length; i++) {
          if (!obj[str.charAt(i)]) {
            obj[str.charAt(i)] = 1;
          } else {
            obj[str.charAt(i)]++;
          }
        }
        var count = 0;
        var word = "";
        for (var i in obj) {
          if (obj[i] > count) {
            count = obj[i];
            word = i;
          }
        }
        console.log("出现次数最多的是:" + word + "出现" + count + "次");
    
    3.写一个获取非行间样式的函数
     //获取非行间样式
        var oDiv2 = document.getElementById("Div2");
        //获取非行间样式 方法,currentStyle是IE中的属性,getComputedStyle是其他浏览器的方法(注意其有两个参数);在非行间样式中,style属性只能去赋值,在行间样式中才能去获取样式;
        function getStyle(obj, attr) {
          //console.log(obj.currentStyle);
          //通过obj.currentStyle是否为真来判断当前浏览器时IE还是其他
          if (obj.currentStyle) {
            //IE
            return obj.currentStyle[attr];
          } else {
            //非IE浏览器
            // console.log(window.getComputedStyle(obj, false)); //返回一个对象  报告元素的所有CSS属性的值
            return window.getComputedStyle(obj, false)[attr];
          }
        }
        console.log(getStyle(oDiv2, "width"));
    
    4.字符串反转
    let str = "123456768";
        function fun1(str) {
          return str
            .split("")
            .reverse()
            .join("");
        }
        console.log(fun1(str));
    
    5.将数字 12345678 转化成 RMB 形式 如: 12,345,678
    var str = 12345678;
        function fun1(str) {
          var newstr = str + ""; //转成字符串
          let strArr = newstr.split("").reverse();
          let result = [];
          for (let i = 0; i < strArr.length; i++) {
            if (i % 3 === 0 && i !== 0) {
              result.push(",");
            }
            result.push(strArr[i]);
          }
          return result.reverse().join("");
        }
        console.log(fun1(str)); // 12,345,678
    

    相关文章

      网友评论

          本文标题:原生js面试题(要求手写代码)

          本文链接:https://www.haomeiwen.com/subject/yqpwrctx.html