题目描述:有一个数组,它的长度为1000,里边存放的是1-100之间的整数,如何实现统计里边每个数字出现的次数及其将它们按出现次数的多到少排序
解题思路:将问题细分为两步,一是先实现每个数字出现次数的统计,二是对统计的次数进行排序。我首先想到的是map,map的key存数组的值,map的value存出现的次数,然后再对这个map的value进行排序
const arr = new Array(1000);
for(let i = 0; i < arr.length; i++) {
arr[i] = Math.floor(Math.random()*100 + 1);
}
const map = new Map();
for(let i = 0; i < arr.length; i++) {
if(map.has(arr[i])) {
const number = map.get(arr[i]) + 1;
map.set(arr[i], number);
} else {
map.set(arr[i], 1);
}
}
// map转成数组是二维数组
const resultArr = Array.from(map);
// 所以是对二维数组的第二个值进行排序
resultArr.sort((a,b) => { return b[1] - a[1]});
console.log(resultArr);