我们面试中最经常问道的一些算法题,因为前端其实相对来说,对算法的要求不高,但因为内卷或者一些小技巧的使用需要一写好的技巧处理,下面就说说经常遇到的面试问题,大家多刷看一下,自己手动敲一下!好脑子不如敲烂键盘!
手写排序,我们经常面试会问到的冒泡排序
// 冒泡排序
function bubbleSort(arr) {
for(var i =0; i< arr.length -1; i++) {
for(var j=0; j< arr.length; j++) {
if(arr[j+1]< arr[j]) {
var temp = arr[j]
arr[j] = arr[j+1];
arr[j+1] = temp
}
}
}
return arr
}
var aa = [1,4,3,2,0]
console.log(bubbleSort(aa),'aa1')
但是我们正常更愿意简单运用的排序是sort:
var aa = [1,4,3,2,0]
aa.sort((a, b)=>{
return a-b
})
console.log(aa,'aa')
数组去重es5:
var arrys = [3,3,44,2,44]
let arry1 = [];
for(var i = 0 ; i< arrys.length; i++) {
if(arry1.indexOf(arrys[i]) == -1) {
arry1.push(arrys[i])
}
}
最便捷的去重利用es6的new Set、Array.from和filter方法:
const arry1 = [...new Set(arrys)]
// 或者是
const arry1 = Array.from(new Set(arrys))
// 再或者
let arry1 = arrys.filter((item, index)=>{
return arrys.indexOf(item) === index
})
斐波那契
它后一个数等于前面两个数的和。在这个数列中的数字,就被称为斐波那契数
利用递归的写法
function fun (n) {
if(n <= 2) {
return 1
}
return fun(n-1) +fun(n-2)
}
console.log(fun(3))