素材牛VIP会员
js 有10,000,000个范围在100以内的正整数,求出每个数字出现的次数,请教一个耗时最短的方法
 天***月  分类:JavaScript  人气:1013  回帖:2  发布于6年前 收藏

我的代码:

let data = {};
  var date1=new Date();
  console.log('date1',date1.getTime())
  let data = {};
  let list = [,,,];
  list.length = 10000000;
  for (let i = 0; i < list.length; i++) {
    list[i] = Math.floor(Math.random() * 100);
    if(data[`${list[i]}`]){
      data[`${list[i]}`]++
    } else {
      data[`${list[i]}`] = 1
    }
  }
  for(let key in data) {
    if (isNaN(data[`${key}`])) {
      data[`${key}`] = 0
    }
  }
  var date2=new Date();
  console.log('时间差',date2.getTime()-date1.getTime())

这个代码我看打印出时间差在700-750ms之间,感觉时间不短,能否把代码更优化?
这样是尝试出来最快的了

 标签:javascript

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv3 码奴
逆***动 PHP开发工程师 6年前#1

你这个写法本身就有问题吧。。。追求性能之前,请先确保结果正确

Lv3 码奴
xi***xu 职业无 6年前#2

可以参考桶排序

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取