1.数组去重
//indexOf判断下标实现
var arr = [1,1,5,2,8,5,8,2,1,3];
var newArr = [];
for (var i = 0;i<arr.length;i++){
if(arr.indexOf(arr[i])===i){
newArr.push(arr[i])
}
}
console.log(newArr)
//es6实现
//set结合拓展运算符使用
const set = new Set([1,2,3,4,4]);
console.log([...set])
//set结合Array.form使用
const set = Array.form(new.Set([1,2,3,4,
4]))
2.防抖
所谓防抖,就是指触发事件后在一定时间内函数只能执行一次,如果在一定时间内又触发了事件,则会重新计算函数执行时间。
类似我们的电脑屏保 生活中的电梯 都有固定的时间,如果中间移动鼠标或者触发电梯按钮,都会重新进行等待。
使用场景:高频触发的事件,比如操作input框 (搜索框)
代码实现:
//用定时器实现防抖
function debounce(func,wait) {
var timer=null;
return function() {
//保存当前调用的dom对象
var _this=this;
//保存事件对象
var args=arguments;
clearTimeout(timer)
timer=setTimeout(function() {
func.apply(_this,args)
},wait)
}
}
3.节流
所谓节流,就是指连续触发事件,但是在 规定时间中只执行一次函数。
无论在固定时间内是否有事件触发,都会按照固定时间规律触发
比如闹钟
代码实现:
//时间戳版本实现节流
function throttle(func,wait) {
//定义初始时间
var oldTime=0;
return function() {
var _this=this;
var args=arguments;
//当前时间戳
var newTime