Я пытаюсь не писать собственный алгоритм сортировки для следующего использования:
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));
Здесь вывод консоли:
- [ "102", "100", "101" ]
- [ "0", "1", "2" ]
Как вы можете видеть, с undescore sortBy я теряю ключевые данные. Эта структура может стать очень большой, поэтому я стараюсь избегать таких вещей, как преобразование в массив, а затем обратно в коллекцию. Есть ли способ сделать это, не выполняя мою собственную функцию сортировки?