es6 一些面试题

//题目1:js 统计一个字符串出现频率最高的字母/数字
//法1:两次遍历
var str = 'asdfghjklaqwertyuiopiaia';
var mostOne=function (str){
var obj={},max='',index=0,str=[...str];
str.forEach(v => {
obj[v]=obj[v] ? ++obj[v] : 1;
});
for(var i in obj){
if(obj[i]>index){
max=i;index=obj[i]
}
}
return max
}
//法2:一次遍历
var str = 'asdfghjklaqwertyuiopiaia';
var mostOne=function (str){
var obj={},max='',index=0,str=[...str];
str.forEach(v => {
obj[v] = obj[v] ? ++obj[v] : 1;
if(obj[v]>index){
max=v;index=obj[v]
}
});
return max
}


//题目2:数组去重 Array.from(1.讲类数组转化为数组 2.浅拷贝)
//法一:用Array.from 和 new Set()
var arr = ['1', '2', '3', '1', 'a', 'b', 'b']
var brr=Array.from(new Set(arr));
//法二:数组遍历+indexOf(相当于两次遍历)
var arr = ['1', '2', '3', '1', 'a', 'b', 'b']
var brr = arr=>{
let brr=[];
arr.forEach((v)=>{
if(brr.indexOf(v)==-1){
brr.push(v);
}
});
return brr;
}
//法三:只遍历一次数组,不区分number和string适用
var arr = ['1', '2', '3', '1', 'a', 'b', 'b']
var brr = arr=>{
let obj={};
arr.forEach(v=>{
obj[v]=1
})
return Object.keys(obj)
}
//法三:arr.filter return 满足条件的
var arr = ['1', '2', '3', '1', 'a', 'b', 'b']
var brr = arr=>{
return arr.filter((v,i)=>{
return arr.indexOf(v) == i;
})
}


//题目3:翻转字符串
//法一:
var str ="Hello Dog";
var reverseStr = str=>{
return str.split("").reverse().join("");
}
//法二:
var str ="Hello Dog";
var reverseStr = str=>{
return [...str].reverse().join("");
}


//题目4:数组中最大差值
//法一:
var arr = [23, 4, 5, 2, 4, 5, 6, 6, 71, -3];
var difference = arr=>{
var max=0,min=arr[0];
arr.forEach(v=>{
max = v>max ? v : max;
min = v<min ? v : min;
})
return max-min;
}
//法二:
var arr = [23, 4, 5, 2, 4, 5, 6, 6, 71, -3];
var difference = arr=>{
var max=Math.max(...arr),min=Math.min(...arr);
return max-min;
}

//题目5:不借助临时变量,进行两个整数的交换
//法一:结构
var a = 2,b = 3;
[a,b]=[b,a];
//法二:异或
var a = 2,b = 3;
(()=>{
a^=b;
b^=a;
a^=b;
})()

//题目6:排序(从小到大)
//法一:利用sort函数
var arr = [43, 32, 1, 5, 9, 22];
var sort = arr=>{
return arr.sort((a,b)=>{
return a-b;
})
}
//法二:冒泡排序
var arr = [43, 32, 1, 5, 9, 22];
var sort = arr=>{
arr.forEach((v,i)=>{
for(j=i+1,len=arr.length;j<len;j++){
if(arr[j]<arr[i]){
[arr[i],arr[j]]=[arr[j],arr[i]]
}
}
})
return arr;
}

猜你喜欢

转载自www.cnblogs.com/miaSlady/p/10931100.html