Contar elementos repetidos en un array

Saludos, vieras que necesito contar y desplegar las veces que se repite una letra en un arreglo, digamos arreglo=[h,h,o,l,a,a,a];
Que me imprima: h se repite 2 veces, a se repite 3 veces.
Con este código que hice me trabaja bien mientras las letras no se repitan más de 3 veces:
function contar(letra){
arrayPalabra=palabra.split("");/*tomo la palabra digitada y la convierto en array*/
llenarArrayNumero();/*aqui le pongo 1 a un arreglo de numeros que seria el contador*/
for(var i=0;i<arrayPalabra.length;i++){
if (arrayPalabra == arrayPalabra[i+1]){
arrayNuevo=arrayPalabra;/*guardo la letra igual en un nuevo arreglo*/
arrayNumero=arrayNumero+1;/*voy sumando la cantidad de veces que se repite la letra*/
}
}
}
El problema es que si tengo una letra más de 2 veces no me funciona bien, te agradezco tu ayuda.

Añade tu respuesta

Haz clic para o