2018前端面试常见算法题

  1对象转换为数组
 
  varobj={0:'我',1:'的',2:'妈',3:'呀',length:4}//obj格式必须是类似数组的格式(键值是索引,具有length属性)var_slice=[].slice;varobjArr=_slice.call(obj);
 
  2.统计一个字符串出现最多的字母
 
  
 
  functioncountMost(str){constobjCount={};
 
  str=str.split('').sort().join('');for(leti=0;i<str.length;i++){letlastIndex=str.lastIndexOf(str[i]);
 
  num=lastIndex-i+1;
 
  objCount[str[i]]=num;
 
  i=lastIndex;
 
  }letmaxStr=[],
 
  maxValue=1;for(letpinobjCount){if(objCount[p]>maxValue){
 
  maxStr=[];
 
  maxStr.push(p);
 
  maxValue=objCount[p];
 
  }elseif(objCount[p]==maxValue){
 
  maxStr.push(p);
 
  }
 
  }returnmaxStr.length==1?maxStr[0]:maxStr;
 
  }console.log(countMost('afjghdfffffraaaasdddddenas'));
 
  3.找出下列正数组的最大差值
 
  constarr=[10,5,11,7,8,9];functiongetMaxProfit(arr){letmax=arr[0],
 
  min=arr[0];for(leti=1;i<arr.length;i++){
 
  max=Math.max(max,arr[i]);
 
  min=Math.min(min,arr[i]);
 
  }returnmax-min;
 
  }console.log(getMaxProfit(arr));
 
  4.获取数组中最大或者最小值
 
  functionmaxAndMin(arr){return{max:Math.max.apply(null,arr.join(',').split(',')),min:Math.min.apply(null,arr.join(',').split(','))
 
  }
 
  }vararr=[22,0,[3,4,2,55]];
 
  maxAndMin(arr).max;//55maxAndMin(arr).min;//0
 
  5.生成指定长度的随机字母数字字符串
 
  functiongetRandomStr(len){varstr="";for(;str.length<len;str+=Math.random().toString(36).substr(2));returnstr.substr(0,len);
 
  }






本文转载自中文网
 

推荐阅读