Compter les éléments uniques dans le tableau sans trier

En JavaScript suivantes trouverez le nombre d'éléments dans le tableau. En supposant qu'il y ait un minimum d'un élément dans le tableau

arr = ["jam", "beef", "cream", "jam"]
arr.sort();
var count = 1;
var results = "";
for (var i = 0; i < arr.length; i++)
{
    if (arr[i] == arr[i+1])
    {
      count +=1;
    }
    else
    {
        results += arr[i] + " --> " + count + " times\n" ;
        count=1;
    }
}

Est-il possible de le faire sans l'aide de sort() ou sans mutation de la matrice en quelque sorte? J'imagine que le tableau devrait être re-créé et le tri peut être fait sur l'ensemble nouvellement créé, mais je veux savoir quelle est la meilleure façon sans tri.
Et oui, je suis un artiste, pas un programmeur, votre honneur.

source d'informationauteur Ghoul Fool