Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.06.2018, 22:16
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 1  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Сортировка по нескольким критериям

Привет всем. Подскажите, как отсортировать список одновременно по двум типам. Количеству и качеству. Как по одному из критериев сортировать, у меня получилось, по нескольким что-то не очень.

Код AS3:
items.sort(sort_item);
private function sort_item(a:MItem, b:MItem):int 
		{
			if (a.count > b.count)
			{
 
				return -1;
			}
			if (a.level > b.level)
			{
				return -1;
			}
 
			if (a.count < b.count)
			{
				return 1;
			}
			if (a.level < b.level)
			{
				return 1;
			}
			return 0;
		}

Старый 10.06.2018, 12:30
RedHead90 вне форума Посмотреть профиль Отправить личное сообщение для RedHead90 Найти все сообщения от RedHead90
  № 2  
Ответить с цитированием
RedHead90

Регистрация: Apr 2018
Сообщений: 42
Код AS3:
array.sortOn(['count', 'level'], Array.NUMERIC);
https://help.adobe.com/en_US/FlashPl....html#sortOn()

Старый 11.06.2018, 15:17
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 3  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
RedHead90 Нужно сделать сортировку конкретно для вектора, а не для array

Старый 11.06.2018, 15:38
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 4  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
RedHead90 Нужно сделать сортировку конкретно для вектора, а не для array
Конвертируй в Array
__________________
Я заклинаю вас действовать иначе.

Старый 11.06.2018, 17:03
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 5  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Bletraut Тогда придется создавать array, потом опять его в Vector. Много лишних действий. Неужели нет способа с вектором?

Старый 11.06.2018, 17:07
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 6  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Код AS3:
items.sort(sort_item);
private function sort_item(a:MItem, b:MItem):int
{  
    // Приоритет 1:
    if (a.count > b.count)
        return 1;
    if (a.count < b.count)
        return -1;
 
    // Приоритет 2:
    if (a.level > b.level)
        return 1;
    if (a.level < b.level)
        return -1;
 
    return 0;
}
__________________
Дети не должны знать о своих родителях

Старый 11.06.2018, 18:43
RedHead90 вне форума Посмотреть профиль Отправить личное сообщение для RedHead90 Найти все сообщения от RedHead90
  № 7  
Ответить с цитированием
RedHead90

Регистрация: Apr 2018
Сообщений: 42
Godwarlock, если рассуждать о лишних действиях, то подумай о том, сколько раз будет вызвана функция сравнения двух элементов. Я абсолютно точно уверен, что даже с учетом того, что ты будешь конвертировать вектор в массив и обратно, нативный sortOn будет работать в разы быстрее, чем пользовательская функция. Естественно, это будет актуально для списков длиной хотя бы в 3к элементов. Если меньше, то даже запариваться не стоит и спокойно юзай метод, который привел Tails.

Старый 11.06.2018, 18:49
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 8  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Зачем гадать? Напишите benchmark, это программирование а не философия
__________________
местонахождение

Старый 11.06.2018, 18:53
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 9  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
А что не так с философией?
__________________
Дети не должны знать о своих родителях

Старый 11.06.2018, 18:57
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 10  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Все с ней хорошо, она позволяет делать выводы основываясь на предположениях/рассуждениях без доказательств и проверки.
__________________
местонахождение

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.