美文网首页
数组排序,元素大小为1-100,含重复项

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

作者: callPromise | 来源:发表于2020-05-20 15:10 被阅读0次

先创建数组

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)

相关文章

网友评论

      本文标题:数组排序,元素大小为1-100,含重复项

      本文链接:https://www.haomeiwen.com/subject/woxnohtx.html