1. 程式人生 > >2.前端常見面試程式設計題整理

2.前端常見面試程式設計題整理

1.輸出字串中出現次數最多的

var str='fdadffddfdffj';
 var obj={};
 for(var i=0;i<str.length;i++){
    var cha=str.charAt(i);
if(!obj.hasOwnProperty(cha)){
  obj[cha]=0;
}
var num=obj[cha];
obj[cha]=num+1;
 }
 var resultChar=0;
 var resultNum=0;
 for(var p in obj){
     if(obj[p]>resultNum){
   resultNum=obj[p];
resultChar=p;
}
 }
 console.log(resultChar+":"+resultNum);

2.駝峰式轉換

var str="border-left-right";
 var arr=str.split('-');
 var result="";
 for(i=0;i<arr.length;i++){
   if(i==0){
      result+=arr[0];
   }else{
      var temp=arr[i];
 var firstChar=temp.substr(0,1);
 firstChar=firstChar.toUpperCase();
 result+=firstChar+temp.substr(1);
   }
 }
 console.log(result);

3.正則表示式

求單個字元次數最多的那個字元名稱及次數

var str="sjdkfljsdflkfsfdkffffsdklf";
 var new_str=str.split("").sort().join("");
 var num=-1;
 var char=null;
 var reg=/(\w)\1+/g;//當連續的字元相同時,\1會讓正則表示式不斷的去擷取,直到遇到不同的字元,然後把相同的字串傳遞給替換函式的第一個引數,把單個字元值傳給第二個引數
 new_str.replace(reg,function(p1,p2){
    if(p1.length>num){
  num=p1.length;
  char=p2;
}
 });
 console.log(new_str);
 console.log(char+":"+num);

將字串grandFatherMomr轉換為grand_father_mom

var result="grandFatherMom".replace(/[A-Z]/g,function($1){
    return "_"+$1.toLowerCase();
 });
 console.log(result);

將字串grand_father轉換為grandFather

var result1="grand_father".replace(/_[a-z]/g,function($1){
    //console.log(arguments);
return $1.substring(1,2).toUpperCase();
 });
 console.log(result1)

4.求兩個陣列交集

var fn=function(a,b){
    a=a.sort();
b=b.sort();
var start=0;
    result=[];
for(var i=0;i<a.length;i++){
 var temp=a[i];
 for(var j=start;j<b.length;j++){
     if(temp==b[j]){
    result.push(b[j]);
 }else if(temp>b[j]){
   continue;
 }else if(temp<b[j]){
    start=j;
break;
 }
 }
}
console.log(result);
 }
 fn([1,2,3,4,5],[4,2,8,9,0]);