Hola:
 
Me agrada saber que cosillas que he puesto en los foros es útil... se me ocurre hacer una función con un número variable de elementos:  
Código:
 function distinto() {
 var entrada = distinto.arguments;
 dife = true;
 for (var i = 0; i < entrada.length - 1; i ++)
  for (var j = i + 1; j < entrada.length; j ++)
   dife = dife && (entrada[i] != entrada[j])
 return dife;
}
  Cambiando el while:
while (temp[0] == temp[1])  
...por while(distinto(temp[0], temp[1])); 
y para otro valor:
while(distinto(temp[0], temp[1], temp[2])); 
Lo he probado con 4 elementos... supongo que debe funcionar a partir de 2. 
Saludos 
