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

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

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Question Список уникальных значений

Задача простая. Получаю на входе массив ключей. Для передачи на сервер мне нужно получить список уникальных значений после фильтрации.
Ничего не придумал лучшего как создать объект и присваивать ему свойства с именами ключей. Перед присвоением можно использовать фильтр чтобы не обрабатывать лишних значений.

Код AS3:
var o:Object = new Object();
o['1']=boolean;
o['5']=boolean;
o['1']=boolean;
Далее пробегаем по свойствам нашего объекта и получаем только уникальные значения свойств
Код AS3:
for (var s:* in o){
trace (s);
}
Вопрос, может во флэше есть другой способ формирования множества уникальных значений?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 20.02.2009, 15:31
heapKiller вне форума Посмотреть профиль Отправить личное сообщение для heapKiller Найти все сообщения от heapKiller
  № 2  
Ответить с цитированием
heapKiller
[+1 26.09.08]
[+5 26.09.08]

Регистрация: Aug 2008
Сообщений: 60
Причем здесь флэш?

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
AS3 прошу прощения
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 20.02.2009, 15:41
heapKiller вне форума Посмотреть профиль Отправить личное сообщение для heapKiller Найти все сообщения от heapKiller
  № 4  
Ответить с цитированием
heapKiller
[+1 26.09.08]
[+5 26.09.08]

Регистрация: Aug 2008
Сообщений: 60
Вы не поняли. Я про то, что данная задача и к AS3 не имеет отношения. У Вас есть массив значений из которого нужно получить массив уникальных значений.
В чем проблема? Зачем так сложно, "свойства с именами ключей"?

Я как бы не очень много пишу на AS но например навскид для массива чисел:

Код AS3:
res = new Array();
a.sort();
while(a.length > 0){
    b = a.shift();
    if(b != res[res.length - 1]){
           res.push(b)
    }          
}
Где res - результирующий массив. a - входной.

зы. Поправочка: sort работает нескольок иначе, чем я думал. И поэтому мой код, вообще говоря, не рабочий. Но смысл из него ясен. См. описание ф-ции sort().


Последний раз редактировалось heapKiller; 20.02.2009 в 16:10.
Старый 20.02.2009, 15:54
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
есть, если мне память не изменяет,вид сортировки в массиве, что он вернёт уникальные элементы.

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Свойства с именами ключей позволяют не осуществлять пробежку по всему массиву полученных значений для проверки на уникальность. На сколько я помню объекты как раз и рекомендуется у большинства авторов использовать вместо массивов как менее ресурсоемкие.
В других языках есть множества SET которые позволяют получить уникальный список значений. При добавлении элемента который является неуникальным он просто игнорируется как не влияющий на конечное множество. Получается в SET скидываешь все значения, на выходе получаешь только уникальные.

Добавлено через 2 минуты
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
есть, если мне память не изменяет,вид сортировки в массиве, что он вернёт уникальные элементы.
смотрел sort() и sortOn() в приписках написано что для неуникальных значений при установленном флаге уникальности сортировка не будет выполнена и функция вернет 0
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 20.02.2009, 16:18
heapKiller вне форума Посмотреть профиль Отправить личное сообщение для heapKiller Найти все сообщения от heapKiller
  № 7  
Ответить с цитированием
heapKiller
[+1 26.09.08]
[+5 26.09.08]

Регистрация: Aug 2008
Сообщений: 60
Я Вам нарисовал отбор уникальных значений в один проход

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Цитата:
Сообщение от heapKiller Посмотреть сообщение
Но смысл из него ясен. См. описание ф-ции sort().
А как по вашему выполняется сортировка? Мне известно несколько способов, но все они подразумевают многократные проходы по одному и тому же массиву чтобы выбрать нужный элемент(max или min из оставшихся не рассмотренных).

Добавлено через 1 минуту
Цитата:
Сообщение от heapKiller Посмотреть сообщение
Я Вам нарисовал отбор уникальных значений в один проход
сам sort в любом случае будет внутренними механизмами но делать ту же самую сортировку(методом пузырька или каким еще не важно). Просто от нас она скрыта)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 20.02.2009, 16:31
heapKiller вне форума Посмотреть профиль Отправить личное сообщение для heapKiller Найти все сообщения от heapKiller
  № 9  
Ответить с цитированием
heapKiller
[+1 26.09.08]
[+5 26.09.08]

Регистрация: Aug 2008
Сообщений: 60
Методов сортировки, насколько я помню, 3. Основных. И у Вас будет k+1 проходов по массиву (где к - проходов при сортировке). При этом я не думаю что внутренний способ для сортировки array() менее эффективен чем применяемые повсеместно.
И вы думаете что поиск по имени свойства более эффективен? Там то-же самое.

Только вот смысл несколько меняется. У Вас значение становится переменной, а оно должно оставаться значением.

Короче в любом случае у Вас будут некие затраты на индексирование.


Последний раз редактировалось heapKiller; 20.02.2009 в 16:33.
Старый 20.02.2009, 18:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS1/AS2:
var arr:Array = ["a", "b", "b", "c", "a"];
var i:int = arr.length;
// If you specify a value of 4 or Array.UNIQUESORT 
// for the sortOptions argument of the ...args parameter 
// and two or more elements being sorted have identical 
// sort fields, Flash returns a value of 0 and does not 
// modify the array
arr.sort(Array.UNIQUESORT);
trace(arr);
var hash:Dictionary = new Dictionary();
while (i--)
{
	hash[arr[i]] ? arr.splice(i, 1) : hash[arr[i]] = i;
}
trace(arr);
Ну только его развернет, но я думаю это не принципиально? Вернее, последние значения будут подобраны первыми, а первые значения не учтуться
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 20.02.2009 в 18:43.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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