JS実装データ構造(五):集合
17666 ワード
function Set(){
//
this.items = {
}
//
//1.add()
Set.prototype.add = function(value){
//
if(this.has(value)) return false;
this.items[value] = value;
return true;
}
//2.has()
Set.prototype.has = function(value){
return this.items.hasOwnProperty(value);
}
//3.remove()
Set.prototype.remove = function(value){
//
if(!this.has(value)) return false;
delete this.items[value];
return true;
}
//4.clear()
Set.prototype.clear = function(v){
this.items = {
};
}
//5.size()
Set.prototype.clear = function(v){
return Object.keys(this.items).length;
}
//6.value()
Set.prototype.values = function(v){
return Object.keys(this.items);
}
//
//1.
Set.prototype.union = function(otherSet){
var unionSet = new Set();
var values = this.values();
// A
for(var i=0;i<values.length;i++){
unionSet.add(values[i]);
}
// B
values = otherSet.values();
for(var i=0;i<values.length;i++){
unionSet.add(values[i]);
}
return unionSet;
}
//2.
Set.prototype.intersection = function(otherSet){
var intersectionSet = new Set();
// A B
var values = this.values();
for(var i = 0;i<values.length;i++){
var item = values[i];
if(otehrSet.has(item)){
intersectionSet.add(item);
}
}
return intersectionSet;
}
//3.
Set.prototype.difference = function(otherSet){
var differenceSet = new Set();
var values = this.values();
for(var i =0;i<values.length;i++){
var item = values[i];
if(!otherSet.has(item)){
differenceSet.add(item)
}
}
return differenceSet;
}
//3.
Set.prototype.subSet = function(otherSet){
var values = this.values();
for(var i =0 ;i<values.length;i++){
var item = values[i];
if(!otherSet.has(item)){
return false;
}
}
return true;
}```