随机数组中出现最多的元素,如果一样多都获取

下班回家,有一盆友,问我一道面试题,要求获取一个随机数组的出现最多的元素,如果又好几个元素和最多的一样多,就最多的全部获取

下面是代码:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>输出arr数组中重复元素,重复数量</title>
</head>

<body>
    <script>
        var arr = new Array(20);
        var obj = {};
        for (var i = 0; i < arr.length; i++) {
            arr[i] = Math.ceil(Math.random() * 10);
        }
        console.log(arr);
        // 定义一个对象用于存放 拆分后的 字符串
        var obj = {};
        Array.prototype.getMost = function() {
            var obj = this.reduce((p, n) => (p[n]++ || (p[n] = 1), (p.max = p.max >= p[n] ? p.max : p[n]), (p.key = p.max > p[n] ? p.key : n), p), {});
            console.log(obj);


            return obj
        }
        obj = arr.getMost()
        console.log(obj, '次数最多: ' + obj.key + ' 次数: ' + obj.max);

        var max = obj.max
        var key = obj.key
        obj.max = 0
        obj.key = 0

        console.log(obj);
        // 此时obj 的属性就是 已经去重的  并且它对应的值就是 该字符串出现的次数
        // 假设 最多的次数的是 max  出现最多的是name 如果有多个相同的数值将他们 推入数组

        var arr2 = []
        var name;

        // 再次循环确定是否有 一样数量的字符
        for (var max in obj) {
            if (obj[max] == key) {
                arr2.push(max);
            }
        }
        console.log(max, "这是出现最多的次数");
        console.log(key, "这是出现最多的其中一个");
        console.log(arr2, "这数组内出现的 就是出现最多的数字");
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值