简洁 js排序算法

算法:

//算法基础:展平数组 
        //使用...   
        //只能展平两层  
        //
        {
            let arr = [1,[2,3],[4,5]];
              let arr2 = ''    ;
              arr2=[].concat(...arr)
              console.log(arr2)
        }
        

        //递归算法
        {
            let arr=[1,[2,3],[[[4,5]]]];
            flatten(arr);
            function flatten(arr){
                return [].concat(
                        ...arr.map(x => Array.isArray(x)?flatten(x):x)        
                )
            }
            console.log(flatten(arr))
        }

        //函数节流算法   距离上次执行超过60毫秒,才能执行
        //思路:执行throttle后 ,lock就是一把锁,只有当lock为false时才执行func,
        //这把锁需要throttle距离上次执行相隔60毫秒才能为false
        {
            function throttle(func,delay=60){
                let lock = false;
                return (...args) =>{
                    if(lock){return}
                    func(...args);
                    lock = true;
                setTimeout( () =>{lock = false}, delay)    
                }
            }
        }

        //函数节流二,算法    操作完后过多少时间 才执行
        //思路:不停的操作,定时器就一直重复叠加执行,定时器i 也就一直在被重复,
        //需要没次执行throttle时将上一次的定时器i清除,
        {
            function throttle(func,delay=300,i=null){
                return (...args) => {
                    clearInterval(i);
                    i=setTimeout(func.bind(null,...args),delay);
                    //i=setTimeout((...args) =>func(...args),delay);// 同上

                }
            }
        }

猜你喜欢

转载自www.cnblogs.com/wxyblog/p/12047594.html