Set【一意コレクション】オブジェクトの反復要素処理
・[@@iterator]【イテレータオブジェクト作成】メソッド
・entries【イテレータオブジェクト作成】メソッド
・forEach【反復要素処理】メソッド
・keys【イテレータオブジェクト作成 (キー)】メソッド
・values【イテレータオブジェクト作成 (値)】メソッド

メモ

構文

操作構文戻り値例外備考
イテレータ オブジェクト作成
(キー・値)
entries ( )イテレータ オブジェクト キー = 値
イテレータ オブジェクト作成
(キー)
keys ( )イテレータ オブジェクト キー = 値
イテレータ オブジェクト作成
(値)
[@@iterator] ( )イテレータ オブジェクト [Symbol.iterator] ( )
values ( )イテレータ オブジェクト
反復要素処理forEach ( callbackfn [, thisArg ] ) undefinedTypeError 例外
for-of

  • callbackfn:反復要素処理を行うコールバック関数
    パラメータ (例)説明
    value要素の値
    key要素のキー (キー = 値)
    setObj対象 Set オブジェクト
  • thisArg:this として参照できるオブジェクト

TypeError 例外:コールバック関数が呼び出し不可

var entriesSet = new Set();
entriesSet.add(1);
entriesSet.add("string2");
var obj3 = new Object("obj3");
entriesSet.add(obj3);

var entries1 = entriesSet.entries();
for (let item of entries1) {
  console.log(item);
}
// 出力:[1, 1]
// 出力:["string2", "string2"]
// 出力:[String, String]

var entries2 = entriesSet.entries();
for (let [key, value] of entries2) {
  console.log(key, value);
}
// 出力:1 1
// 出力:string2 string2
// 出力:String... String...

var entries3 = entriesSet.entries();
for (var i = 0; i < entriesSet.size; i++) {
  console.log(entries3.next().value);
}
// 出力:[1, 1]
// 出力:["string2", "string2"]
// 出力:[String, String]
var keysSet = new Set();
keysSet.add(1);
keysSet.add("string2");
var obj3 = new Object("obj3");
keysSet.add(obj3);

var keys1 = keysSet.keys();
for (let key of keys1) {
  console.log(key);
}
// 出力:1
// 出力:string2
// 出力:String...

var keys2 = keysSet.keys();
for (var i = 0; i < keysSet.size; i++) {
  console.log(keys2.next().value);
}
// 出力:1
// 出力:string2
// 出力:String...
var iteratorSet = new Set();
iteratorSet.add(1);
iteratorSet.add("string2");
var obj3 = new Object("obj3");
iteratorSet.add(obj3);

var iterator1 = iteratorSet[Symbol.iterator]();
for (let value of iterator1) {
  console.log(value);
}
// 出力:1
// 出力:string2
// 出力:String...

var iterator2 = iteratorSet[Symbol.iterator]();
for (var i = 0; i < iteratorSet.size; i++) {
  console.log(iterator2.next().value);
}
// 出力:1
// 出力:string2
// 出力:String...
var valuesSet = new Set();
valuesSet.add(1);
valuesSet.add("string2");
var obj3 = new Object("obj3");
valuesSet.add(obj3);

var values1 = valuesSet.values();
for (let value of values1) {
  console.log(value);
}
// 出力:1
// 出力:string2
// 出力:String...

var values2 = valuesSet.values();
for (var i = 0; i < valuesSet.size; i++) {
  console.log(values2.next().value);
}
// 出力:1
// 出力:string2
// 出力:String...
function forEachFunc(value, key, setObj) {
  console.log(value, key);
}

var forEachSet = new Set();
forEachSet.add(1);
forEachSet.add("string2");
var obj3 = new Object("obj3");
forEachSet.add(obj3);

forEachSet.forEach(forEachFunc);
// 出力:1 1
// 出力:string2 string2
// 出力:String... String...

var forEachFunc2 = null;
forEachSet.forEach(forEachFunc2);  // TypeError 例外
var forOfSet = new Set();
forOfSet.add(1);
forOfSet.add("string2");
var obj3 = new Object("obj3");
forOfSet.add(obj3);

for (let value of forOfSet) {
  console.log(value);
}
// 出力:1
// 出力:string2
// 出力:String...

関連