JavaScriptデータ構造とアルゴリズム——セットSet
7155 ワード
JavaScriptにおける集合データ構造――Set
ES 6は、新しいデータ構造Setを提供し、それは同じ配列であり、異なるのは、集合Setの各要素が一意であり、重複した値がないことである.Set自体は構築関数であり、Setデータ構造を具体化することができる.
オブジェクトの長さを判断し、
データ構造セット
集合は行列ではなくオブジェクトを使用します.JavaScriptオブジェクトのキーの値は重複を許さないので、集合要素の唯一の重複は保証されます.
セットのために以下の方法を作成します.
ES 6は、新しいデータ構造Setを提供し、それは同じ配列であり、異なるのは、集合Setの各要素が一意であり、重複した値がないことである.Set自体は構築関数であり、Setデータ構造を具体化することができる.
const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
console.log(i);
}
// 2 3 5 4
Setセットの属性と方法属性1.コンストラクタは、newによって1セットを実例化することができます.const set = new Set();
2.集合のメンバー総数を取得するset.size
方法add(value)
/値を追加し、Set構造自体delete(value)
/値を削除し、ブール値を返します.削除が成功したかどうかはhas(value)
/ブール値を返します.Setのメンバclear()
/Setのセットのすべての要素であり、リターン値がないかどうかを表します.オブジェクトの長さを判断し、
for...in...
文を使用してオブジェクトの属性を巡回すると、オブジェクトがプロトタイプObjectから継承される属性を含むので、hasOwnProperty
方法を使用して、オブジェクトが属性を持つかどうかを検証する.すべてのJavaScriptオブジェクトにはハスOwnProperty方法があります.この方法は、オブジェクトが特定の属性を持つかどうかを示すブール値を返します.データ構造セット
集合は行列ではなくオブジェクトを使用します.JavaScriptオブジェクトのキーの値は重複を許さないので、集合要素の唯一の重複は保証されます.
セットのために以下の方法を作成します.
has(value)
:値がセットにある場合、trueに戻ります.そうでなければfalseに戻ります.add(value)
:新しいエントリをセットに追加します.remove(value)
:セットから1つの値を除去する.clear()
:セット内のすべてのアイテムを除去する.size()
:セットに含まれる要素の数を返します.配列のlength属性と類似しています.values()
:セット内のすべての値を含む配列を返します.function Set() {
var items = {};
/* this.has = function(value) {
return value in items;
}; */
this.has = function(value) {
return items.hasOwnProperty(value);
};
this.add = function(value) {
if (!this.has(value)) {
items[value] = value;
return true;
}
return false;
};
this.remove = function(value) {
if (this.has(value)) {
delete items[value];
return true;
}
return false;
};
this.clear = function() {
items = {};
};
/* this.size = function() {
return Object.keys(items).length;
}; */
this.size = function() {
var count = 0;
for (var props in items) {
if (items.hasOwnProperty(props)) ++count;
}
return count;
};
/* this.values = function() {
return Object.keys(items);
}; */
this.values = function() {
var values = [];
for (var props in items) values.push(props);
return values;
};
}
セットを使うvar set = new Set();
set.add(1);
console.log(set.size()); // 1
console.log(set.has(1)); // true
console.log(set.values()); // ['1']
set.add(2);
console.log(set.size()); // 2
console.log(set.has(2)); // true
console.log(set.values()); // ['1', '2']
set.remove(1);
console.log(set.has(1)); // false
console.log(set.values()); // ['2']
set.remove(2);
console.log(set.values()); // []