- 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积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
