Conte elementos únicos no array sem ordenar
Em JavaScript, o seguinte irá encontrar o número de elementos na matriz. Supondo que haja um mínimo de um elemento na matriz
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;
}
}
É possível fazer isso sem usar sort () ou sem alterar o array de alguma forma? Eu imagino que a matriz teria que ser recriada e, em seguida, poderia ordenar na matriz recém-criada, mas eu quero saber qual é a melhor maneira sem classificar. E sim, eu sou um artista, não um programador, sua honra.