美文网首页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(""));
}

相关文章

  • 前端常见面试题十九

    目录:1、用正则和非正则,实现一个字符串转为驼峰2、判断一个字符串中出现次数最多的字符,统计这个次数3、写一个获取...

  • 说说前端的防抖和节流以及最简单的实现

    防抖和节流在前端是很常见的知识点,并且也是常见的面试题。 00 背景 防抖和节流在前端中是应用很常见的,特别是在 ...

  • 前端常见面试题(十九)@郝晨光

    实现三栏布局,左右两栏固定宽度100px,中间栏自适应宽度,实现三列自适应等高 使用弹性盒子肯定是最简单的一种方法...

  • 前端相关技术点

    1.整理了一份关于前端的一些常见面试题(2017) 我遇到的前端面试题2017 2.用JS获取地址栏的参数(超级简...

  • 前端常见的字符串操作面试题

    前端常见的字符串操作面试题 一、字符串去重 var str = "ahahggagsssjjj"; functio...

  • PHPer 面试指南-扩展阅读资源整理

    前端篇 收集的前端面试题和答案 前端开发面试题 史上最全的web前端面试题汇总及答案 前端工程师手册 HTTP协议...

  • PHPer 面试指南-扩展阅读资源整理

    前端篇 收集的前端面试题和答案 前端开发面试题 史上最全的web前端面试题汇总及答案 前端工程师手册 HTTP协议...

  • 2019-10-11

    前端常见面试题(实战遇到) 1、浏览器内核 2、常用的块元素和内联元素 3、数据类型 * 4、SQL语句 5、前端...

  • 2019-02-27问题(三)

    题目来源:python常见面试题——网络编程和前端部分 题目: 1. AJAX是什么,如何使用AJAX? ...

  • 前端常见面试题目录整理@郝晨光

    前言 由于最近在整理前端常见面试题,整理的文章标题可能有些乱,导致后期不好查找,特此总结目录,目录会与面试题同步更...

网友评论

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

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