思路:使用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。