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

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

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

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
По умолчанию Подскажите как правильно отсортировать массив

Добрый день,
есть вот такой вот массив:
Код AS3:
var arrData:Array = [
	{ data: {id: 10, num: 5} },
	{ data: {id: 11, num: 3} },
	{ data: {id:  1, num: 8} },
	{ data: {id:  2, num: 3} },
	{ data: {id: 99, num: 4} }
];
Подскажите пожалуйста - как правильно отсортировать данный массив по значениям arrData.data.id + arrData.data.num?
Пробовал таким вот способом:

Код AS3:
arrData.sortOn(["data.id", "data.num"], Array.NUMERIC);
что то безрезультатно

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Array.sort() -> compareFunction.

Старый 23.05.2011, 17:34
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 3  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
Попробовал вот такой вот вариант:
Код AS3:
var arrData:Array = [
	{ data: {id: 10, num: 5} },
	{ data: {id: 10, num: 7} },
	{ data: {id: 11, num: 3} },
	{ data: {id:  1, num: 8} },
	{ data: {id:  2, num: 3} },
	{ data: {id: 99, num: 4} },
	{ data: {id: 99, num: 2} }
];
 
function compare(a:Object, b:Object):int {
	if (a.data.id < b.data.num) return -1; 
	else 
		if (a.data.id > b.data.num) return 1; 
		else return 0; 
}
 
arrData.sort(compare);
 
for each(var i:Object in arrData) {
	trace(i.data.id, i.data.num);
}
получил:
Код:
2 3
1 8
10 7
99 4 - WTF?
99 2 - WTF?
10 5
11 3
Что то не очень похоже на правду, я не очень понимаю как отсортировать и второй (num) параметр.

Добавлено через 1 минуту
Должно быть в оригинале:
Код:
1 8
2 3
10 5
10 7
11 3
99 2
99 4

Старый 23.05.2011, 17:47
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
А зачем ты сравниваешь a.data.id > b.data.num? Тебе же надо поле id сравнить с полем id.
Код AS3:
function compare(a:Object, b:Object):int
{
	if (a.data.id < b.data.id)
	{
		return -1; 
	}
	else if(a.data.id > b.data.id)
	{
		return 1; 
	}
 
	if (a.data.num < b.data.num)
	{
		return -1; 
	}
	else if(a.data.num > b.data.num)
	{
		return 1; 
	}
 
	return 0;
}

Старый 23.05.2011, 17:48
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 5  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
2Волгоградец: Спасибо! Все понял!

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

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

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


 


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


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