86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
|
dojo.provide("dojox.collections.Set");
|
||
|
dojo.require("dojox.collections.ArrayList");
|
||
|
|
||
|
(function(){
|
||
|
var dxc=dojox.collections;
|
||
|
dxc.Set=new (function(){
|
||
|
function conv(arr){
|
||
|
if(arr.constructor==Array){
|
||
|
return new dojox.collections.ArrayList(arr); // dojox.collections.ArrayList
|
||
|
}
|
||
|
return arr; // dojox.collections.ArrayList
|
||
|
}
|
||
|
this.union = function(/* array */setA, /* array */setB){
|
||
|
// summary
|
||
|
// Return the union of the two passed sets.
|
||
|
setA=conv(setA);
|
||
|
setB=conv(setB);
|
||
|
var result = new dojox.collections.ArrayList(setA.toArray());
|
||
|
var e = setB.getIterator();
|
||
|
while(!e.atEnd()){
|
||
|
var item=e.get();
|
||
|
if(!result.contains(item)){
|
||
|
result.add(item);
|
||
|
}
|
||
|
}
|
||
|
return result; // dojox.collections.ArrayList
|
||
|
};
|
||
|
this.intersection = function(/* array */setA, /* array */setB){
|
||
|
// summary
|
||
|
// Return the intersection of the two passed sets.
|
||
|
setA=conv(setA);
|
||
|
setB=conv(setB);
|
||
|
var result = new dojox.collections.ArrayList();
|
||
|
var e = setB.getIterator();
|
||
|
while(!e.atEnd()){
|
||
|
var item=e.get();
|
||
|
if(setA.contains(item)){
|
||
|
result.add(item);
|
||
|
}
|
||
|
}
|
||
|
return result; // dojox.collections.ArrayList
|
||
|
};
|
||
|
this.difference = function(/* array */setA, /* array */setB){
|
||
|
// summary
|
||
|
// Returns everything in setA that is not in setB.
|
||
|
setA=conv(setA);
|
||
|
setB=conv(setB);
|
||
|
var result = new dojox.collections.ArrayList();
|
||
|
var e=setA.getIterator();
|
||
|
while(!e.atEnd()){
|
||
|
var item=e.get();
|
||
|
if(!setB.contains(item)){
|
||
|
result.add(item);
|
||
|
}
|
||
|
}
|
||
|
return result; // dojox.collections.ArrayList
|
||
|
};
|
||
|
this.isSubSet = function(/* array */setA, /* array */setB) {
|
||
|
// summary
|
||
|
// Returns if set B is a subset of set A.
|
||
|
setA=conv(setA);
|
||
|
setB=conv(setB);
|
||
|
var e = setA.getIterator();
|
||
|
while(!e.atEnd()){
|
||
|
if(!setB.contains(e.get())){
|
||
|
return false; // boolean
|
||
|
}
|
||
|
}
|
||
|
return true; // boolean
|
||
|
};
|
||
|
this.isSuperSet = function(/* array */setA, /* array */setB){
|
||
|
// summary
|
||
|
// Returns if set B is a superset of set A.
|
||
|
setA=conv(setA);
|
||
|
setB=conv(setB);
|
||
|
var e = setB.getIterator();
|
||
|
while(!e.atEnd()){
|
||
|
if(!setA.contains(e.get())){
|
||
|
return false; // boolean
|
||
|
}
|
||
|
}
|
||
|
return true; // boolean
|
||
|
};
|
||
|
})();
|
||
|
})();
|