Comment trier une collection d'objets en JavaScript sans convertir un tableau

Je suis en train d'essayer d'éviter l'écriture de mon propre algorithme de tri pour la suite de cas d'utilisation:

avatars = {};
avatars[102] = {userInfo: {buddy_name: 'Avatar102', is_online: 1}};
avatars[100] = {userInfo: {buddy_name: 'Avatar100', is_online: 1}};
avatars[101] = {userInfo: {buddy_name: 'Avatar101', is_online: 1}};

console.log(_.keys(avatars));
avatars = _.sortBy(avatars, function(avatar) {return avatar.userInfo.buddy_name.toLowerCase();});
console.log(_.keys(avatars));

Voici la sortie de la console:

  • ["102", "100", "101"]
  • ["0", "1", "2"]

Comme vous pouvez le voir, avec undescore de sortBy je suis perdre la clé de données. Cette structure peut être très grande, donc j'essaie d'éviter des choses comme la conversion d'un tableau et puis retourner à la collection. Est-il possible de le faire sans rouler ma propre fonction de tri?

Des Avatars est un Dictionnaire et non triés, de par leur nature. Alors, qu'est-ce exactement avez-vous besoin? La capacité à effectuer une itération sur les avatars dans l'ordre?
jsfiddle.net/zL9GD/2

OriginalL'auteur Rosco | 2012-05-16