JavaScriptデータ構造——セット(Set)
2472 ワード
概念と構造セットの中の要素は重複できません. セットの中の要素は値だけです. は、任意の要素のセットを空セットと呼ぶ. セットの操作
集合は9種類の常用操作があります.は、要素が に存在するかどうかを検査する.追加要素 は、要素 を除去する.クリアセット は、セット長 を取得する.セットのすべての値を抽出する は、 を統合する.クロス 差分セット JS実現
JSの中の集合構造は対象を通じて実現する必要があります.集合の中の元素は値だけで、キーや索引がないので、対象の中の属性のキーパッドの値を同じ値にしてこの効果を達成することができます.
集合は9種類の常用操作があります.
has(element)
add(element)
remove(element)
clear()
size()
values()
union(otherSet)
intersection(otherSet)
difference(otherSet)
JSの中の集合構造は対象を通じて実現する必要があります.集合の中の元素は値だけで、キーや索引がないので、対象の中の属性のキーパッドの値を同じ値にしてこの効果を達成することができます.
function MySet(){
var set = {};
//
this.has = function(element){
return set.hasOwnProperty(element);
}
//
this.add = function(element){
if(this.has(element)){
//
return false;
}else{
//
set[element] = element;
return element;
}
}
//
this.remove = function(element){
if(this.has(element)){
//
delete set[element];
return true;
}else{
//
return false;
}
}
//
this.clear = function(){
set = {};
}
//
this.size = function(){
return Object.keys(set).length;
}
//
this.values = function(){
var result = [];
for(var key in set){
if(set.hasOwnProperty(key)){
result.push(set[key]);
}
}
return result;
}
//
this.union = function(otherSet){
var result = new MySet();
this.values().forEach(element => {
result.add(element);
});
otherSet.values().forEach(element => {
result.add(element);
});
return result;
}
//
this.intersection = function(otherSet){
var result = new MySet();
this.values().forEach(element => {
if(otherSet.has(element)){
result.add(element);
}
});
return result;
}
//
this.difference = function(otherSet){
var result = new MySet();
this.values().forEach(element => {
if(!otherSet.has(element)){
result.add(element);
}
});
return result;
}
}