美文网首页JS
前端常见面试题十九

前端常见面试题十九

作者: jw_fc89 | 来源:发表于2019-07-31 10:27 被阅读39次

    目录:
    1、用正则和非正则,实现一个字符串转为驼峰
    2、判断一个字符串中出现次数最多的字符,统计这个次数
    3、写一个获取非行间样式的函数
    4、字符串反转,如将 '12345678' 变成 '87654321'
    5、将数字 12345678 转化成 RMB 形式 如: 12,345,678

    1、用正则和非正则,实现一个字符串转为驼峰

    非正则

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

    正则

    let str = 'get-element-by-id';
    function toCamBakStr(str) {
        return str.replace(/\-\w/g, ([,word]) => {
            return word.toUpperCase()
        })
    }
    let newStr = toCamBakStr(str);
    console.log(newStr);  // getElementById
    

    2、判断一个字符串中出现次数最多的字符,统计这个次数

    let str = "asdfssaaasasasasaa";
    console.log(getNumber(str));
    function getNumber(str) {
      //定义一个空的对象存储数据
      let obj = {};
      //这个对象是用来存储最终结果
      let result = {
        word: "",
        count: 0
      };
      //遍历数据
      for (let i = 0; i < str.length; i++) {
        //判断空的对象中有没有值,有的就是当前值++ 没有的就让值为1
        if (obj[str[i]]) {
          obj[str[i]]++;
        } else {
          obj[str[i]] = 1;
        }
      }
      //这个遍历是遍历obj对象里的值
      for (let key in obj) {
        //如果对象一个值比结果对象里的数字大,那么这个值就是最终结果。
        if (obj[key] > result.count) {
          result.word = key;
          result.count = obj[key];
        }
      }
      return result;
    }
    
    

    3、写一个获取非行间样式的函数

    let app = document.getElementById('app');
    function getStyle(el, attr) {
        // currentStyle 是IE浏览器获取非行间样式的方法
        // 返回一个样式对象,通过指定属性名取到对应的属性值
        if(el.currentStyle) {
            return el.currentStyle[attr];
        }else {
            // getComputedStyle 是其他浏览器获取非行间样式的方法
            // 两个参数,第二个参数可以是要匹配的伪类元素字符串
            // 对于普通元素来说可以不写,也可以是null
            // 返回一个样式对象,通过指定属性名取到对应的属性值
            return window.getComputedStyle(el, null)[attr]
        }
    }
    console.log(getStyle(app, 'width')); // 500px
    

    4、字符串反转,如将 '12345678' 变成 '87654321'

    let str = "abcdefg";
    function strReverse(str) {
      //将字符串通过split("") 切割为数组, 用reverse() 实现数组的反转 ,通过join("")
      //将数组转换为字符串。
      return console.log(
        str
          .split("")
          .reverse()
          .join("")
      );
    }
    strReverse(str);
    

    5、将数字 12345678 转化成 RMB 形式 如: 12,345,678

    let str = 12345678;
    
    toRMB(str);
    
    function toRMB(str) {
      //创建一个空的数组 用来存储转换的值
      let arr = [];
      //将数字转换为字符串,然后转 切割为数组,并反转
      let str1 = (str + "").split("").reverse();
      //循环遍历
      for (let i = 0; i < str1.length; i++) {
        //判断条件 三个为一组 并且第一个不为下标0
        if (i % 3 === 0 && i != 0) {
          arr.push(","); //数组中添 加 ","目的是为了分割
        }
        //将字符添加到空的数组中
        arr.push(str1[i]);
      }
      //最终将处理好的数组反转并转换为字符串
      console.log(arr.reverse().join(""));
    }
    

    相关文章

      网友评论

        本文标题:前端常见面试题十九

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