先创建数组
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)
网友评论