思路:使用map表示数据类型与对应出现的次数,使用变量maxc表示出现的最大次数,使用arr表示结果。首先使用forEach方法遍历数组array,并判断每一项的数据类型,再设置map将对应的数据类型出现的次数加一,同时使用当前出现次数更新最大出现次数;接着使用forEach方法遍历map的键值对,如果出现的次数等于maxc,则将数据类型加入arr,最后将maxc加入arr即可。
<script type="text/javascript"> const _findMostType = array => { let map=new Map() let maxc=0 let arr=[] array.forEach(item=>{ //统计次数 get无法获取则是返回undefined map.set(typeof(item),(map.get(typeof(item)) || 0) + 1) maxc=Math.max(maxc,map.get(typeof(item))) }) map.forEach((value,key)=>{ if(value==maxc) arr.push(key) }) arr.push(maxc) return arr } </script>
总结:使用new Map()方法创建map对象,使用set(key,value)方法设置map,使用get(key)方法获取map,如果get无法获取则返回undefined,故此时可以使用(map.get(typeof(item)) || 0),即如果get获取到数据则使用对应数据,反之undefined则使用0。注意,map对象也可以使用forEach方法,其遍历value和key。