按key排序_JS Map 对象排序

题目描述:有一个数组,它的长度为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);

43cb6fb7772b7093f0d61ecda03c8754.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值