![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Задача простая. Получаю на входе массив ключей. Для передачи на сервер мне нужно получить список уникальных значений после фильтрации.
Ничего не придумал лучшего как создать объект и присваивать ему свойства с именами ключей. Перед присвоением можно использовать фильтр чтобы не обрабатывать лишних значений. Далее пробегаем по свойствам нашего объекта и получаем только уникальные значения свойств Вопрос, может во флэше есть другой способ формирования множества уникальных значений? ![]()
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1 26.09.08]
[+5 26.09.08] Регистрация: Aug 2008
Сообщений: 60
|
Причем здесь флэш?
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
AS3 прошу прощения
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1 26.09.08]
[+5 26.09.08] Регистрация: Aug 2008
Сообщений: 60
|
Вы не поняли. Я про то, что данная задача и к AS3 не имеет отношения. У Вас есть массив значений из которого нужно получить массив уникальных значений.
В чем проблема? Зачем так сложно, "свойства с именами ключей"? Я как бы не очень много пишу на AS но например навскид для массива чисел: res = new Array(); a.sort(); while(a.length > 0){ b = a.shift(); if(b != res[res.length - 1]){ res.push(b) } } зы. Поправочка: sort работает нескольок иначе, чем я думал. И поэтому мой код, вообще говоря, не рабочий. Но смысл из него ясен. См. описание ф-ции sort(). Последний раз редактировалось heapKiller; 20.02.2009 в 16:10. |
|
|||||
|
стервочка (я мужик)
|
есть, если мне память не изменяет,вид сортировки в массиве, что он вернёт уникальные элементы.
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Свойства с именами ключей позволяют не осуществлять пробежку по всему массиву полученных значений для проверки на уникальность. На сколько я помню объекты как раз и рекомендуется у большинства авторов использовать вместо массивов как менее ресурсоемкие.
В других языках есть множества SET которые позволяют получить уникальный список значений. При добавлении элемента который является неуникальным он просто игнорируется как не влияющий на конечное множество. Получается в SET скидываешь все значения, на выходе получаешь только уникальные. Добавлено через 2 минуты смотрел sort() и sortOn() в приписках написано что для неуникальных значений при установленном флаге уникальности сортировка не будет выполнена и функция вернет 0
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1 26.09.08]
[+5 26.09.08] Регистрация: Aug 2008
Сообщений: 60
|
Я Вам нарисовал отбор уникальных значений в один проход
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
А как по вашему выполняется сортировка? Мне известно несколько способов, но все они подразумевают многократные проходы по одному и тому же массиву чтобы выбрать нужный элемент(max или min из оставшихся не рассмотренных).
![]() Добавлено через 1 минуту сам sort в любом случае будет внутренними механизмами но делать ту же самую сортировку(методом пузырька или каким еще не важно). Просто от нас она скрыта)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1 26.09.08]
[+5 26.09.08] Регистрация: Aug 2008
Сообщений: 60
|
Методов сортировки, насколько я помню, 3. Основных. И у Вас будет k+1 проходов по массиву (где к - проходов при сортировке). При этом я не думаю что внутренний способ для сортировки array() менее эффективен чем применяемые повсеместно.
И вы думаете что поиск по имени свойства более эффективен? Там то-же самое. Только вот смысл несколько меняется. У Вас значение становится переменной, а оно должно оставаться значением. Короче в любом случае у Вас будут некие затраты на индексирование. Последний раз редактировалось heapKiller; 20.02.2009 в 16:33. |
|
|||||
|
Modus ponens
|
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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|