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]);