![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Здравствуйте!
Помогите решить задачу. Есть множество объектов типа ArrayCollection, со своей структурой. Для ускорения работы с данными, я хочу структуировать представление ArrayCollection в соответствии со своими задачами. Для этого я формирую списки индексов элементов ArrayCollection с помощью метода getItemIndex(). Но вот незадача: после сортировки ArrayCollection элементы меняют свой индекс. Подскажите, как можно проиндексировать объект ArrayCollection, чтобы потом по индексу элемента можно было обратиться к последнему, не взирая на операции вставки, сортировки, удаления. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Цитата:
- GBee, Вы Flash-разработчик? Это же не наш метод! ![]() |
|
|||||
|
Почему, просто будет две ссылки на один и тот же объект. Синхронизация - работы на 10 минут. Я за быстродействие :о)
Добавлено через 2 минуты У себя постоянно использую массив+таблица. Массив для массовых операций, таблица - быстро вытащить нужный элемент.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
GBee, поправьте меня, если я ошибаюсь:
var testArCol:ArrayCollection = new ArrayCollection(new Array(2,1,8,5)); var elementTestArCol:Object = testArCol.getItemAt(0); trace(elementTestArCol); // 2 testArCol.removeItemAt(0); trace(testArCol.getItemAt(0)); // 1 trace(elementTestArCol); // 2 Возможно я чего-то недопонимаю в механизме присвоения ссылок в AS. |
|
|||||
|
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
function passByRef(objParam:Object):void { var testAr:Array = new Array(objParam.x, objParam.y); objParam.x++; objParam.y++; trace(objParam.x, objParam.y); trace(testAr[0], testAr[1]); } var objVar:Object = {x:10, y:15}; trace(objVar.x, objVar.y); // 10 15 passByRef(objVar); // 11 16 10 15 trace(objVar.x, objVar.y); // 11 16 ...Хм. Разобрался - Всё-таки хочется работать с исходным объектом ArrayCollection не прибегая к методам перебора. Есть такая возможность в Flex-framework? Последний раз редактировалось zorexundra; 12.09.2011 в 14:49. |
|
|||||
|
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Есть множество ArrayCollection соответствующих таблицам серверной БД.
Всё это множество нужно систематизировать на стороне клиента и свести в один ArrayCollection. В этом конечном ArrayCollection должны быть значения идентифицирующие исходные итемы множества ArrayCollection (теперь я так понимаю ссылки на эти итемы), по которым можно быстро обратиться к исходным данным. Механизм наподобие реляционных БД: есть идентификатор поля, по нему получаем доступ к строке таблицы. Или механизм хеш-таблицы. Цель - ускорить работу с данными учитывая переменные условия. Кажется, Вы помогли мне в формировании понимания путей реализации: необходимо создать коллекцию ссылок на исходные элементы. Но остаётся иллюзия, что можно как-то пометить элементы исходных коллекций, чтобы потом обратиться к ним по этим меткам. Такой путь более приятен для моих стереотипов. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 48
|
Это не иллюзия. На практике такой кейс и вправду встречается. Рекомендую при инициализации коллекции заводить также мапу: ключ->айтем. Можно, например, экстендить ArrayCollection, добавить параметр itemsMap, и в конструкторе ArrayCollection'a (а также, возможно в оверрайде метода refresh) прописать инициализацию мапы из сорса. Назвать MappedArrayCollection.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 07:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|