账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    求解为什么这样反而慢一些
    • 2017-10-23 00:00
    • 10
    27
    0

    数组扁平化 同样是20万条数据 函数二执行的时间是函数一执行的两倍?

    函数一

    function s(arr) {
         console.time('recursion')
        var steam=[]
        var a=0
        function recursion(arr) {
            a++
            arr.forEach(function (x) {
                if(Object.prototype.toString.call(x)=='[object Array]'){
                    recursion(x,a++)
                } else {
                    steam.push(x)
                }
    
            })
        }
       recursion(arr)
        console.timeEnd('recursion')
        return {
            'x':a,
            'z':steam
        }
    }

    函数2用了二分法 就是先转换成2个平均的数组再依次递归

            8
          /  \
         4    4
        /\    /\
       2  2   2 2
    

    这样 然后数组大的放左边 由于有些是单数所以右边加个字符'null'

    function z(a) {
        console.time('map')
        var steam=[]
        function map(arr) {
            if(arr.length>2){
                var add=arr.slice(0,arr.length/2)
                var odd=arr.slice(arr.length/2,arr.length)
                map(add)
                map(odd)
            } else {
                if(arr[1]&&Object.prototype.toString.call(arr[1])==='[object Array]'){
                    map(arr[1].concat(arr[0]))
                }else if(Object.prototype.toString.call(arr[0])==='[object Array]'){
                    map(arr[0])
                }else {
                    if (arr[1] && arr[0] < arr[1]) {
                        steam.push(arr[1])
                        steam.push(arr[0])
                    }
                    else {
                        steam.push(arr[0])
                        arr[1]&&steam.push(arr[1])
                        if(!arr[1]){
                            steam.push('null')
                        }
                    }
                }
            }
    
        }
        map(a)
        console.timeEnd('map')
        return steam
    }
    

    用分部的方法为什么反而慢了..

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 逆疯飞扬 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部