RN 数组去重 防抖 节流

// 去重
const arrayUnique = (arr:any, key:any)=>{
    let hash = {};
    return arr.reduce((item:any, next:any)=>{
        hash[next[key]] ? '' : hash[next[key]] = true && item.push(next);
        return item;
    }, []);
};

/**
 * 防抖函数 又可以称为定时任务函数
 */
 function debounce_new(func:any, delay:number) {
    let timeout:any
    return function() {
      clearTimeout(timeout)
      timeout = setTimeout(() => {
        func.apply(this, arguments)
      }, delay)
    }
  }
  
  /**
   * 节流函数--避免在一定时间内多次响应
   */
  function throttle_new(func:any, delay:number) {
      let run = true
      return function () {
        if (!run) {
          return
        }
        run = false // 持续触发的话,run一直是false,就会停在上边的判断那里
        setTimeout(() => {
          func.apply(this, arguments)
          run = true // 定时器到时间之后,会把开关打开,函数就会被执行
        }, delay)
      }
  }

你可能感兴趣的:(RN 数组去重 防抖 节流)