JavaScript面试题(持续更新)

摘要:
对于{if{max=Obj[key]maxcode=key}}控制台,Obj[str.charAt]){Obj[str.charAt]=1}else{Obj[str.chharAt]++}}}letmax=0letmaxcode=“”。log//a128 null和undefined之间的异同a为变量赋值null、undefineed、,
  • 先注明一下题目来源,剑哥的前端面试每日3+1 大家如果有兴趣可以去github上答题

用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

    <script>
        let arr = []
        function addItem() {
            let item = Math.floor(Math.random()*32 + 2)
            if(arr.indexOf(item) == -1) {
                arr.push(item)
            }
            if(arr.length < 5) {
                addItem()
            }
        }
        addItem()
    </script>

2 写一个方法,去掉字符串中的空格

    <script>
        // type 0(全部空格),1(开头空格),2(结尾空格),3(开头结尾空格), 默认为0
        function trim(str,type) {
            switch(type) {
                case 1: 
                    return str.replace(/^s*/g,'')
                    break
                case 2: 
                    return str.replace(/s*$/g,'')
                    break
                case 3: 
                    return str.replace(/^s*|s*$/g,'')
                    break
                default: 
                    return str.replace(/s*/g,'')
                    break
            }
        }
        let str = ' ago ogj  '
        let newstr = trim(str)   //'agoogj'
        let newstr0 = trim(str,0) //'agoogj'
        let newstr1 = trim(str,1) //'ago ogj  '
        let newstr2 = trim(str,2) //' ago ogj'
        let newstr3 = trim(str,3) //'ago ogj'
    </script>

 3 去除字符串中最后一个指定字符

  str.lastIndexOf(code)-----获取字符所在的索引

  srt.substring(index1,index2)-----截取字符串

<script>
        // 去除字符串中最后一个字符
        function trimCode(str,code) {
            if(str.length === 0) return
            let index = str.lastIndexOf(code)
            let newStr = str.substring(0,index) + 
        str.substring(index+1,str.length)
            return newStr
        }
</script>

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

    <script>
        //写一个方法把下划线命名转成大驼峰命名
        function toCamel(str) {
            //使用split件str拆分成数组
            if(str.split('_').length === 1) return
            //使用reduce累加器对数据进行累加,并将索引大于0的元素首字母大写
            //substr(index,index) 截取字符串中指定索引的字符集
            let newStr = str.split('_').reduce((a,b)=>{
                return a+b.substr(0,1).toUpperCase() + b.substr(1)
            })
            return newStr
        }
        console.log(toCamel('hello_world'))
    </script>

5 写一个方法切换字符串的英文大小写

    <script>
        //写一个方法切换字符串的大小写
        function toggle(str) {
            return str.replace(/([a-z]*)([A-Z]*)/g, (m, s1, s2)=>{
                return `${s1.toUpperCase()}${s2.toLowerCase()}`
            })
        }
        console.log(toggle('asgSDGWE54adDS'))
    </script>

 6 使用原生js实现以下元素操作

<div id="tag">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
    </div>
1)2移动到4后面; 2)删除2; 3)在3,4之间添加一个3.5
     <script>
        let tag = document.getElementById('tag')
        let div1 = document.querySelector('#tag>div:nth-child(1)')
        function fun1() {
            let div2 = document.querySelector('#tag>div:nth-child(2)')
            let div5 = document.querySelector('#tag>div:nth-child(5)')
            tag.removeChild(div2)
            tag.insertBefore(div2,div5)
        }
        function fun2() {
            let div2 = document.querySelector('#tag>div:nth-child(2)')
            tag.removeChild(div2)
        }
        function fun3() {
            let div4 = document.querySelector('#tag>div:nth-child(4)')
            let newDiv = document.createElement('div')
            newDiv.innerHTML = 3.5
            tag.insertBefore(newDiv,div4)
        }
    </script>

7 查找一个字符串中出现最多的字符,并统计个数

    <script>
        let str = 'aghaosbasldskdpqashdaognkdalqjgoddjddjdjdjdjjdjajapaaagaggk'
        let obj = {}
        for(let i=0;i<str.length;i++) {
            if(!obj[str.charAt(i)]) {
                obj[str.charAt(i)] = 1
            } else {
                obj[str.charAt(i)]++
            }
        }
        let max = 0
        let maxcode = ''
        for(var key in obj) {
            if(obj[key] > max) {
                max = obj[key]
                maxcode = key
            }
        }
        console.log(maxcode,max)  //a 12
    </script>

8 null与undefined的异同

  a 相似点

    给一个变量赋值null,undefined,这两种写法几乎等价

    两者在if条件判断语句中,都会自动装换为fasle

    null == undefined 得到的结果是true

  b 不同点 

    null === undefined 得到的结果是false

    null表示没有对象,即该处不应该有值

    undefined表示缺少值,就是此处应该有值,但是还没有定义

9 写一个去除制表符和换行符的方法

function deleteTabs(str = '') {
    return str.replace(/s+/g,'')
}

10 统计某一字符或字符串在另一个字符串中出现的次数

function codeNums(code,str) {
    let regexp = new RegExp(code,'g')
    return str.match(regexp).length
}

11写一个加密字符串的方法

  字符串加密的方法很多,有md5(无解密),base64,aes,凯撒加密等,这里实现一下凯撒加密解密,MD5和base64百度很多博客,就不写了

function baseCode(str='',type,space=3) {
    // type=1 加密,type=2解密
    if(type === 1) {
        return str.
        split("")
        .map((s) => {
            return String.fromCharCode(s.charCodeAt() + space)
        })
        .join("")
        
    }else if(type === 2) {
        return str.
        split("")
        .map((s) => {
            return String.fromCharCode(s.charCodeAt() - space)
        })
        .join("")
    }
}
console.log(baseCode('hello world',1,2));   //jgnnq"yqtnf
console.log(baseCode('jgnnq"yqtnf',2,2));   //hello world

12 写一个判断数据类型的方法

Object.prototype.toString.call()

13 简要描述下什么是回调函数并写一个例子出来

  回调函数就是指函数在初始定义的时候先不执行,等满足一定条件以后再拿出来执行。如下:
  setTimeout(() => { console.log('在本轮任务最后执行!') }, 0);

14 JavaScript有哪些内置对象

  • Date
  • Array
  • Object
  • Math
  • RegExp
  • Function
  • Set
  • Map等

15 

免责声明:文章转载自《JavaScript面试题(持续更新)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IOS lame库 pcm转mp3 分析(方案一)为什么我的安卓虚拟机没有虚拟键盘下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)

文章来源:http://blog.csdn.net/brave_heart_lxl/article/details/7186631 以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错: 首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。...

Oracle 多行记录合并/连接/聚合字符串的几种方法

怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。-什么是合并多行字符串(连接字符串)呢,例如: 1 SQL> desc test; 2 Name Type Nullable Default Comments 3 ------- -------...

【转】mysql字符串函数

对于针对字符串位置的操作,第一个位置被标记为1(即:第一个字母索引为1)。 ASCII(str) 返回字符串str的 最左面字符的ASCII代码值。如果str是空字符串, 返回0。如果str是NULL,返回NULL。 mysql> select ASCII('2'); -> 50mysql> select ASCII(2...

Python中的函数参数有冒号 声明后有-&amp;gt; 箭头

在python3.7 环境下 函数声明时能在参数后加冒号,如图: def f(ham: str, eggs: str = 'eggs') -> str : print("Annotations:", f.__annotations__) print("Arguments:", ham, eggs) return ham...

hive函数之~字符串函数

1、字符串长度函数:length 语法: length(string A)返回值: int说明:返回字符串A的长度 hive> selectlength('abcedfg') fromtableName; 7 2、字符串反转函数:reverse 语法: reverse(string A)返回值: string说明:返回字符串A的反转结果 h...

php解码js使用escape转码的函数

/** * 功能和js unescape函数,解码经过escape编码过的数据 * @param $str */ function unescape($str) { $ret = ''; $len = strlen($str); for ($i = 0; $i < $len; $i ++) {...