冒泡排序
let arr=[4,5,108,33,42,52,19]
let item;
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
item=arr[i]
arr[i]=arr[j]
arr[j]=item
}
}
}
console.log(arr) //[108, 52, 42, 33, 19, 5, 4]
去重
let arr=[4,4,108,33,33,52,109]
for(let i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr.splice(j,1)
j--
}
}
}
console.log(arr) //[4, 108, 33, 52, 109]
es6 set去重
function unique (arr) {
return Array.from(new Set(arr))
}
console.log(unique(arr)) //[4, 108, 33, 52, 109]
随机数函数
function num(a,b){
return Math.floor(Math.random()*(b-a+1)+a)
}
console.log(num(3,8))
防抖,节流
- 防抖=>函数调用,控制函数延迟执行,延迟时间内再次触发调用,则重新进入延迟
function antiShake(){
clearTimeout(tiem)
const tiem=setTimeout(()=>{
console.log('执行结果')
},300)
}
- 节流=>使得一定时间内只触发一次函数,通过判断是否到达一定时间来触发函数
function throttle(){
let flag=true
return function(){
if(!flag) return
flag=false
setTiemout(()=>{
console.log('执行节流')
},300)
}
clearTimeout(tiem)
const tiem=setTimeout(()=>{
flag=true
console.log('执行结果')
},300)
}
- 总结
函数节流不管事件触发有多频繁,都会保证在规定时间内一定会执行一次真正的事件处理函数,而函数防抖只是在最后一次事件后才触发一次函数。 比如在页面的无限加载场景下,我们需要用户在滚动页面时,每隔一段时间发一次 Ajax 请求,而不是在用户停下滚动页面操作时才去请求数据。这样的场景,就适合用节流技术来实现