let obj = {},
  result = [],
  num = 0;

array.map(item => {
  let type = typeof (item);

  obj[type] = (obj[type] || 0) + 1

  num = Math.max(obj[type], num)
})

for (let key in obj) {
  result = obj[key] == num ? [...result, key] : result
}

return [...result, num]

代码并不复杂,原理是【对象key的唯一性

将类型值作为对象的key,然后将出现的次数作为对象的value

最后统计出现次数最多的key就可以了