前端面試代碼總結中

快速排序

function quickSort(arr){
 if(arr.length<=1){
  return arr;
}
var midindex=Math.floor(arr.length/2);
var midvalue=arr.splice(midindex,1)[0];//取出中間項
var arrLeft=[];
var arrRight=[];
for(var i=0;i<arr.length;i++){
  var item=arr[i];
  item<midvalue? arrLeft.push(item):arrRight.push(item);
}
return quickSort(arrLeft).concat(midvalue,quickSort(arrRight))
}

二分查找

function find(arr,key){
var low=0;
var high=arr.length-1;
while(high>=low){
var mid=parseInt((low+high)/2);
if(arr[mid]===key){
return arr[mid];
}else if(arr[mid]>key){
  high=mid-1;
}else if(arr[mid]<key){
 low=mid+1
}else{
return -1;
}
}

}

冒泡排序

function bubble(arr){
var temp-0;
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-1-i;j++){
    if(arr[j]>arr[j+1]){
   temp=arr[j];
   arr[j]arr[j+1];
   arr[j+1]=temp;
   
}
}
}
return arr;
}

數組去重

var arr=[1,2,3,3,4]
var arr1=[...new Set(arr)]
 function unique(arr){
  var arr1=[];
  for(var i=0;i<arr.length;i++){
   var item=arr[i];
   if(arr1.indexOf(item)===-1){
   arr1.push(item)
}
}
 return arr1;
}

打印數組重複的元素

function repeat(arr){
var arr1=[];
arr.sort();
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i])===-1&&arr[i]===arr[i+1]){
arr1.push(arr[i])
}
return arr1;
}

}

正則替換

var str='abc';
str.replace(/a/g,'b');//bbc

統計字符串的次數

function countStr(str){
   var arr=str.split('');
   var obj={};
   for(var i=0;i<arr.length;i++){
     var item=arr[i];
     if(obj[item]){
    obj[item]++;
}else{
 obj[item]=1;
}
}
 return obj;
}

統計字符串次數出現最多的字符

function maxCount(str){
  var arr=str.split('');
  var max=0;
  var maxEle=null;
  var param={};
  for(var i=0;i<arr.length;i++){
   var item=arr[i];
   param[item]===undefined? param[item]=1:(param[item]++);
   if(param[item]>max){
    max=param[item];
    maxEle=item;
}
}
return '最多的元素'+maxEle+'次數是'+max;
}

給定url將參數轉化爲對象

function getParam(url){
var param={};
 var arr=url.split('?')[1];//獲取後面的參數
 var arr1=arr.split('&');//id=1, name=zhang
 for(var i=0;i<arr1.length;i++){
  var item=arr1[i].split('=');//id,1,name,zhang
  param[item[0]]=item[1];//若是取參數if(item[0]===key){return item[1]}
}

return param;
}

數組扁平化

var arr=[1,2,3,[4,5]];
arr.flat(infinity);
arr.toString().split(',').map((item)=>{
 return Number(item)
})

隨機排序

function random(arr){
arr.sort(function(a,b){
  return Math.random()-0.5;
})
}

字符串的倒敘

str.split('').reverse().join();

先中後序遍歷二叉樹

function Node (data, left, right) {
    this.data = data;
    this.left = left;
    this.right = right;
    this.show = function () {
        return this.data;
    };
}


function BST () {
    this.root = null;
    this.insert = function (data) {
        var node = new Node(data, null, null);
        if (this.root === null) {
            this.root = node;
        } else {
            var current = this.root;
            var parent;
            while (true) {
                parent = current;
                if (data < current.data) {
                    current = current.left;
                    if (current === null) {
                        parent.left = node;
                        break;
                    }
                } else {
                    current = current.right;
                    if(current === null) {
                        parent.right = node;
                        break;
                    }
                }
            }
        }
    };
function preorder(node){
if(!node){
  return;
}
var left=node.left;
var right=node.right;
console.log(node.val);//中
left&&preorder(left);//左

right&&preorder(right);//右

}
//中序
function midorder(node){
if(!node){
  return;
}
var left=node.left;
var right=node.right;
left&&preorder(left);//左
console.log(node.val);//中
right&&preorder(right);//右

}
//後序
function postorder(node){
if(!node){
  return;
}
var left=node.left;
var right=node.right;
left&&preorder(left);//左
right&&preorder(right);//右
console.log(node.val);//中

}

層次遍歷二叉樹

function level(root){
 if(!root){
 return;
}
var queue=[];
var result=[];
queue.push(root);
while(queue.length>0){
var node=queue.shift();
result.push(node.val);
if(node.left){
queue.push(node.left);
}
if(node.right){
queue.push(node.right)
}
}
return result;
}

翻轉鏈表

var obj={val:1,next:{val:2,next:{val:3,next:null}}}
function reverse(head){
if(head===undefined||head.next===undefined){
 return;
}
var p=head;
var q=head.next;
head.next=undifined;
while(q){
var r=q.next;
q.next=p;
p=q;
q=r;
}
return p;
}

設計者模式:工廠模式

function Animal(options){
var obj=new Object();
obj.name=options.name;
obj.getInfo=function(){
return obj.name;
}
return obj;
}
var cat=Animal({name:'leo'})
console.log(cat.getInfo())

睡眠函數

function sleep(time){
 return new Promise((resolve,reject)=>{
   setTimeout(()=>{resolve('over')},time)
})
}
async function run(time){
let result=await sleep(time)
}
run(3000)

補充中。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章