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

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

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

Регистрация: Jul 2005
Сообщений: 7
По умолчанию Сортировка многомерного массива

Есть следующий многомерный массив
Код:
Ar = []
Ar[0] = {}
Ar[0]["шило"] = {}
Ar[0]["шило"].count = 10
Ar[0]["шило"].color = "red"
Ar[0]["веревка"] = {}
Ar[0]["веревка"].count = 30
Ar[0]["веревка"].color = "синяя"
Ar[0]["мыло"] = {}
Ar[0]["мыло"].count = 2
Ar[0]["мыло"].color = "белое"
//...

exp(Ar[0])	//мыло
		//веревка
		//шило


Ar[0].sort();
exp(Ar[0])	//мыло
		//веревка
		//шило
			


Ar[0].sort(Array.DESCENDING);
exp(Ar[0]) 	//мыло
		//веревка
		//шило

function exp(obj:Object, full:Boolean):Void
{
	
	if(full) ASSetPropFlags(obj, null, null, 7)
	for (var i in obj){
		trace (i+' :: '+obj[i]);
	}
}
Насколько я понимаю sort в данном случае не работает sortOn тоже, поскольку по сути требуется отсортировать свойства объекта.

Если возможность как-то отсортировать данный массив так что бы выводилась последовательность: шило, мыло, верёвка?


Последний раз редактировалось non4me; 30.11.2007 в 02:44.
Старый 30.11.2007, 10:20
CorC вне форума Посмотреть профиль Отправить личное сообщение для CorC Найти все сообщения от CorC
  № 2  
Ответить с цитированием
CorC
 
Аватар для CorC

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
У вас 3 мерный массив, потому сорт тут врядли поможет, сами напишите свою функцию.
З.Ы.: странно что хотите вывод 10, 2, 30, а не 2, 10, 30
__________________
"We Are The Champions My Friends!" Queen

Старый 30.11.2007, 19:41
non4me вне форума Посмотреть профиль Отправить личное сообщение для non4me Найти все сообщения от non4me
  № 3  
Ответить с цитированием
non4me

Регистрация: Jul 2005
Сообщений: 7
Цитата:
Сообщение от CorC
З.Ы.: странно что хотите вывод 10, 2, 30, а не 2, 10, 30
Ну это как раз не странно. Мне требуется сортировка по строкам. В этом случае 10, 2, 30 как раз правильная последовательность.

Что касается функции то я как раз и рассчитывал что кто-то сталкивался с данной задачей и поделится опытом ее решения.

Как говорится одна голова хорошо, а десять голов лучше в два раза

Старый 30.11.2007, 23:27
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
сортировка производится по значению а не по индексам ( а в данном случае шило мыло веревка - индексы)
__________________
Отряд Котовскага

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

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
Цитата:
Сообщение от non4me
Как говорится одна голова хорошо, а десять голов лучше в два раза
Да все уже написано, поищите алгоритмы сортировки: пузырьком, вставками... их же куча.
__________________
"We Are The Champions My Friends!" Queen

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Код:
var Arr = [[],[]];
Arr[0][0] = {label:'шило', count:10,color:'red'};
Arr[0][1] = {label:'мыло', count:2,color:'blue'};
Arr[0][2] = {label:'веревка', count:30,color:'white'};
Arr[0].sortOn('count');
i=0
while(Arr[0][i]){
	trace(Arr[0][i].label);
	i++;
}
поле count играет роль индекса. в примере при сортировке его значения сортируются как строки, обратите внимание. чтобы сортировалось как числа нужно добавить опцию
Код:
Arr[0].sortOn('count', Array.NUMERIC);


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

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

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


 


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


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