笔试遇到的一些函数题(不断更新)

前言

笔试经常遇到一些函数题实现一些功能,把觉得有意思的记录下,顺带复习下,如果有更好的办法,欢迎指出

一、字符串转换为驼峰命名法

  已知有字符串foo='get-element-by-id',写一个function将其转化成驼峰表示法"getElementById”

  很明显可以看出就是从第二个单词开始每个单词首字母大写,首先自然是获取每个单词

function toStr(foo){
    //根据分隔符获取到每个单词
    var foos=foo.split("-")
    for(var i=1;i<foos.length;i++){
        //foos[i]就是每个单词,foos[i][0]就是他的首字母需要大写,再把原单词去掉首字母进行拼接,最终取代原来的单词
        foos[i]=foos[i][0].toUpperCase()+foos[i].slice(1)
    }
}

二、数组去重

1.普通遍历数组

function getArr(arr){
    for(var i=0;i<arr.length;i++){
        var s=arr[i]//记录当前数据
        for(var j=i+1;j<arr.length;j++){
            if(s==arr[j]){//与原数组进行比较,如果相同,则存在重复,需要去掉这个数组里的数据,继续比较下去
                arr.splice(j,1)
                j=j-1//需要更改下标
            }    
        }
    }
}

2.利用ES6的Set容器

function getArr(arr){
    var arr2=arr//定义一个数组复制原来的
    var set=new Set(arr2)//利用set容器的不可重复特性实现去重
    arr.splice(0,arr.length)//原来的数组置为空,准备接受去重后的数据
    arr=Array.from(new Set(set))    
    return arr;
}

 

 三、编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数

function getNum(n,m){
    var arr=[]
    for(var i=n;i<=m;i++){
        if(i%2==1){
            arr.push(i)
        }
    }
    var count=0
    for(var j=0;j<arr.length;j++){
        for(var i=n;i<=m;i++){
            count++
            console.log(i*10+arr[j])
        }
    }
    console.log(n+""+m+"两个数字之间可以组成的奇数个数为"+count)
}

 四、js递归的方式写1到100求和

function add(num1=1,num2=2){
    var num = num1+num2;
    if(num2+1>100){
         return num;
    }else{
          return add(num,num2+1)
    }
 }
var sum =add(); 

 五、字符串按‘红黄蓝’排序,例如‘黄红蓝红’排序后变为‘红红黄蓝’

function sortStr(str){
    var r=0,b=0,y=0
    var s=""
    for(var i=0;i<str.length;i++){
        switch(str[i]){
            case '':
                r++;
                break;
            case '':
                b++;
                break;
            case '':
                y++;
                break;
        }
    }
    for(var i=0;i<r;i++)
        s+=''
    for(var i=0;i<y;i++)
        s+=''
    for(var i=0;i<b;i++)
        s+=''
    return s;
}

六、函数实现多个数组取交集

function get(arrs){
    var b=[]//存放交集结果的数组
    for(var i=0;i<arrs.length;i++){
    if(i==0){
        b=[...new Set(arrs[i])].filter(item=>new Set(arrs[i+1]).has(item))
        i++
    }else{
        b=[...new Set(b)].filter(item=>new Set(arrs[i]).has(item))
    }
   }
   return b;
}

 

posted @ 2020-10-05 22:41  白马过平川Z  阅读(247)  评论(0)    收藏  举报