请补全JavaScript代码,要求找到参数数组中出现频次最高的数据类型,并且计算出出现的次数,要求以数组的形式返回。
注意:
- 基本数据类型之外的任何引用数据类型皆为"object"
- 当多种数据类型出现频次相同时将结果拼接在返回数组中,出现次数必须在数组的最后
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script type="text/javascript">
const _findMostType = array => {
// 存放结果的数组
let arr = [];
// 对象,数据类型为键名,键值为数据类型出现的次数
let o = {};
// 出现次数最多数据类型的次数
let maxnum = 0;
// 遍历数组
array.forEach(item => {
// 获取数据类型 -- 基本数据类型、object类型
let type = (typeof item) ? (typeof item) : 'object';
o[type] = o[type] ? o[type] + 1 : 1;
maxnum = maxnum > o[type] ? maxnum: o[type];
})
// 生成返回数组
Object.keys(o).forEach(key => {
if(o[key] === maxnum){
arr.push(key);
}
})
arr.push(maxnum);
return arr;
}
</script>
</body>
</html>
创建一个对象,用来存数据类型的出现次数 数据类型:次数
但是数据类型有 基本数据类型,引用数据类型,引用数据类型就是’object’
判断在对象中类型是否存在,如果不存在则添加进去,如果存在就数量+1;每添加一种数据类型,或者数据类型的值+1,那么就判断最大的maxnum是不是最大的。