FLEX: как лучше всего проверить, был ли объект уже добавлен в коллекцию ArrayCollection? - PullRequest
0 голосов
/ 19 апреля 2010

Мне нужно объединить 2 arrayCollection и избежать дубликатов. Они содержат объекты со своими собственными атрибутами. Я хотел бы избежать дубликатов.

спасибо

Ответы [ 2 ]

0 голосов
/ 19 апреля 2010
        var array1:ArrayCollection = new ArrayCollection();
        var array2:ArrayCollection = new ArrayCollection();
        var array3:ArrayCollection = new ArrayCollection(array1.source);
        for(var i:int;i<array2.length;i++){
            if (!(array3.contains(array2.getItemAt(i))))
                array3.addItem(array2); 

        }

Это самый простой алгоритм, который работает для не очень больших списков. Метод contains будет проверять ссылки на объекты, и вы должны использовать свой собственный метод, если вы определяете дубликаты, просматривая свойства объектов.

0 голосов
/ 19 апреля 2010

Если 2 массива ArrayCollections потенциально содержат одинаковые объекты, это будет

if (acDestination.getItemIndex(acSource[i]) == -1)
// add to the destination

Если объекты не совпадают, но вы хотите избежать дублирования значений в ключевом поле, попробуйте функцию фильтра на целевой ArrayCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...