题目来源:
高频数据类型_牛客题霸_牛客网 (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>