笔试遇到的那些函数题不断更新

213 阅读1分钟

前言

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

字符串转换为驼峰命名法

  • 题目:已知有字符串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)
    }
    return foos.join('')
}

数组去重

  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//需要更改下标
            }    
        }
    }
    return arr;
}
  1. 利用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;
}

编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数.比如:计算0~3之间能组成的奇数是: 01、03、13、21、23、31

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;
}

未完待续。。。 持续关注敬请期待~