ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### 数组去重 ``` var result = Array.from(new Set(arr)); ``` ``` for(var i = 0; i < arr.length - 1; i++) { for(var j = i + 1; j < arr.length; j++) { if(arr[j] === arr[i]) arr.splice(j--, 1); } } console.log(arr); ``` ``` var result = []; for(var i = 0; i < arr.length; i++) { if(result.indexOf(arr[i]) < 0) result.push(arr[i]); } console.log(result); ``` #### 函数节流(不想让函数触发太快) resize\mousemove\scroll等函数,不希望触发太快,最好隔一阵子才触发。 ``` throttling(func, time) { //第一次则立即执行 if(typeof func.id === undefined) { func.id = 0; func(); return } //之后每次都是定时器结束后才执行 if(!func.id) { func.id = setTimeout(() => { func(); func.id = 0 }, time) } } $(window).on("resize", function() { throttling(someFunc, 500); }); ``` #### 函数防抖 ``` function _debounce(fn,wait,time){ var previous = null; //记录上一次运行的时间 var timer = null; return function(){ var now = +new Date(); if(!previous) previous = now; //当上一次执行的时间与当前的时间差大于设置的执行间隔时长的话,就主动执行一次 if(now - previous > time){ clearTimeout(timer); fn(); previous = now;// 执行函数后,马上记录当前时间 }else{ clearTimeout(timer); timer = setTimeout(function(){ fn(); },wait); } } } function _log(){ console.log(1) } window.onscroll = _debounce(_log,500,2000) ``` 函数防抖是只执行重复操作的最后一次(当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间),而节流是每多少单位时间内只执行一次(预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新周期)。