数组排序,元素大小为1-100,含重复项

2020-05-20  本文已影响0人  callPromise

先创建数组

function getRandomInt(max) {
  return Math.floor(Math.random() * Math.floor(max) + 1);
}

const arr = [];
for(let i=0;i<1000000;i++) {
  arr[i] = getRandomInt(1000000)
}

方法

function sortArr(arr) {
    var arrVal = [], temp = {};
    //统计各元素出现次数,例如arr=[3, 6, 7, 9, 7, 6, 10, 10, 3, 6],则temp = {3: 2, 6: 3, 7: 2, 9: 1, 10: 2},注意自动进行了排序
    temp = arr.reduce(function(pre,cur){
     if(pre.hasOwnProperty(cur)) {
      pre[cur]++;
     } else {
      pre[cur] = 1
     }
     return pre;
    },{});

    //按照出现次数重新生成一个数组
    for(let i in temp) {
     let tArr = Array(temp[i]).fill(Number(i));
     arrVal.push.apply(arrVal,tArr);
    }
    return arrVal;
}

执行一下

var arrVal = sortArr(arr)
上一篇 下一篇

猜你喜欢

热点阅读