JS38 高频数据类型

题目来源:

高频数据类型_牛客题霸_牛客网 (nowcoder.com)

JS38 高频数据类型

描述

请补全JavaScript代码,要求找到参数数组中出现频次最高的数据类型,并且计算出出现的次数,要求以数组的形式返回。
注意:
1. 基本数据类型之外的任何引用数据类型皆为"object"
2. 当多种数据类型出现频次相同时将结果拼接在返回数组中,出现次数必须在数组的最后

示例1

输入:

__findMostType([0,0,'',''])

复制输出:

['number','string',2]或['string','number',2]


题目要求很明确,就是返回数组种最多的数据类型和该数量。

js种使用typeof x来返回x的数据类型

既然考察的是数据类型(数据类型是一个字符串)的数量统计,我们可以采用map来存数据类型及其个数。

所以我们需要遍历数组种每个元素的数据类型,并存入map数组种。遍历过程要更新最大值。

遍历完,然后将 最大值次数的 数据类型压入结果数组中。

最后再把max压入结果数组。最后返回。

根据该思路可以写出代码:【注意力扣种必须使用var,使用let过不了】

<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>
    	
        <script type="text/javascript">
            const _findMostType = array => {
                // 补全代码
               var max=0;//最大次数
               var res=[];//结果数组
               var map=new Map();//别漏了new
               
               //遍历数组array
               for(let a of array){
                var type=typeof a;
                if(map.has(type)){
                    //如果已经存过该类型
                    var count=map.get(type);
                    count++;
                    map.set(type,count);
                    max=Math.max(max,count);
                }else{
                    //第一次出现该数据类型
                    map.set(type,1)
                }
               }

               //查找符合条件的数据类型
               var keys=map.keys();//获取map种的key集合
               for(let k of keys){
                if(map.get(k)===max){
                    res.push(k);
                }
               }
               res.push(max);
               return res;
            }
        </script>
    </body>
</html>

猜你喜欢

转载自blog.csdn.net/m0_62742402/article/details/134063044