前端面试题—手写代码

目录

1.冒泡排序
2.插入排序
3.快速排序
4.获取数组中最大值
5.数组去重
6.十进制转二进制
7.将英文句子中的每个单词首字母转为大写
8.每个单词后添加逐渐增加的数字
9.删除开头或结尾空字符串
10.格式化

1.冒泡排序
function bubbleSort(arr){
   //r从1开始,到<length结束
  for(var r=1;r<arr.length;r++){  
    for(var i=0;i<arr.length-r;i++){
      if(arr[i]>arr{i+1]){  
        //交换当前元素和下一个元素的位置
        //方法1:a+=b;b=a-b;a-=b;
        //方法2:b=[a,a=b][0];
        arr[i+1]=[arr[i],
        arr[i]=arr[i+1]][0];  
      }
    }
  }
}

2.插入排序
function insertSort(arr){
  for(var i=1;i<arr.length;i++{
    var temp=arr[i];
    var p=i-1;
    while( temp < arr [ p ] && p > = 0){
      arr[ p+1 ] =arr [ p ];
      p--;
    }
  arr [ p+1 ] =temp;
  }
}

3.快速排序
function quickSort(arr){
  if(arr.length<=1){
    return arr;
  }else{
    var c=Math.floor(arr.length/2);
    var center=arr.splice(c,1)[0];
    var left= [],right=[];
    for (var i = 0; i < arr.length; i ++){
      if (arr[i] <= center){left.push(arr[i])
      }else{right.push(arr[i])}
    }
    return quickSort(left)
           .concat(center,quickSort(right));
  }
}

4.获取数组中最大值
var arr=[1,3,5,7,8,9,1,2,5,4,];
function getMax(arr){
for(var i=0,max=arr[0];
i<arr.length;
arr[i]>max&&(max=arr[i]),i++);
return max;//返回max
}
console.log(getMax(arr));//4

5.数组去重

方法一:

var arr=["a","b","c","a","b","a","b","c",];
function unique1(arr){
  //遍历arr中每个元素,同时声明空数组
  for (var i=0, uarr=[]; i<arr.length; i++){  
    //遍历uarr中每个元素
    for (var j=0;  j<uarr.length; j++){  
      //如果uarr中当前元素等于arr中当前元素
      if(uarr [j] == arr[i] {  
        //就退出循环
        break;  
        }
    }
    //将arr中当前元素加入uarr中
    j==uarr.length&&(uarr[j]=arr[i]); 
  }
  //返回uarr
  return uarr;  
}

方法二:

function unique2(arr){
  for (var i=0, hash=[]; i<arr.length; i++){
    if(hash[arr[i]]===undefined){
      hash[arr[i]]=1;
    }
  }
  i=0;
  var(keys[i++] in hash);
  return keys;
}

6.十进制转二进制
function dec2bin(dec){
  var bin=[];  //声明空数组bin
  while(dec>0){  //只要dec>0,就反复
    bin.unsgift(dec%2);
    dec=parseInt(dec/2);
  } 
  return bin.join("");
}

7.将英文句子中的每个单词首字母转大写
var str="we two who and who";
//\b[a-z]+\b
str=str.replace(/\b[a-z]+\g,
  function(kwd){
    return kwd.toUpperCase();
  }
);

8.每个单词后面添加逐渐增加的数字
var str="we two who and who";
var i=5;
str = str.replace(/\b[a-z]+\b/g,
  function(kwd){
    return kwd+i++;
  }
);

9.删除开头或结尾空字符串
function Itrim(str){
  return str.replace(/^\s+/,"");
}
function rtrim(str){
  //"\t前 端\t"=>"\t前 端"
  return str.replace(/^\s+$/,"");
}
function trim(str){
 //"\t前 端\t"=>"\前 端"
return str.replace(/^\s+|\s+$/g,""); 
}

10.格式化
var date="20190603一下1947";
  date=date.replace(
   /(\d{4}(\d{2}(\d{2})
   ([\u4e00-\u9fa5])
   ([\u4e00-\u9fa5])(\d{2})(\d{2})/,
"$1年$2月$3日 星期$4$5午 $6:$7");

猜你喜欢

转载自blog.csdn.net/weixin_34288121/article/details/90785117