Flex:设置两个数组集合的差异

Ole*_*nko 1 apache-flex actionscript-3

我正在寻找一种方法来交叉我的数组集合.

我有一个集合:allItems和另一个subSet.我想创建另一个ArrayCollection,其中将存储subSet中不存在的所有项.有没有办法做到这一点?

bac*_*dos 6

eemeli提供的工作答案...这里是针对速度优化的替代实现(数组访问而不是调用)和可伸缩性(方法提供O(m + n)而不是O(m*n))...

public static function difference(a:ArrayCollection, b:ArrayCollection):ArrayCollection {
    var entry:*, map:Dictionary = new Dictionary(), intersection:Array = [];
    for each (entry in a.source) map[entry] = entry;
    for each (entry in b.source) delete map[entry];
    for each (entry in map) intersection.push(entry);
    return new ArrayCollection(intersection);
}
Run Code Online (Sandbox Code Playgroud)