forEach【反復要素処理】
[@@iterator]【イテレータオブジェクト作成】
entries【イテレータオブジェクト作成】
keys【キー要素イテレータ作成】
values【値要素イテレータ作成】

Map.prototype.forEach【反復要素処理】

メモ

構文

Map.forEach( callbackfn [ , thisArg ] )

callbackfn 反復要素処理を行うコールバック関数 (詳細は下記参照)
thisArg コールバック関数内でthis で参照されるオブジェクト

TypeError 例外 callbackfnが呼び出し可能な関数オブジェクト以外
callbackfn (反復要素処理を行うコールバック関数)
パラメータ (例)説明
value要素の値
key要素のキー
mapObj対象 Map オブジェクト

var map = new Map();
map.set(0, null);
map.set(1, "ONE");
map.set("two", 2);
map.set("abc", "ABC");

function forEachFunc1(value, key, mapObj) {
  console.log("[" + key + "]:" + value);
}
map.forEach(forEachFunc1);
// 出力:[0]:null
// 出力:[1]:ONE
// 出力:[two]:2
// 出力:[abc]:ABC

function forEachFunc2(value, key, mapObj) {
  console.log("[" + key + "]:" + value);
  if (typeof value === 'string') {
    this.push(value);
  }
}

var array = new Array();
map.forEach(forEachFunc2, array);
// 出力:[0]:null
// 出力:[1]:ONE
// 出力:[two]:2
// 出力:[abc]:ABC
console.log(array);
// 出力:["ONE", "ABC"]

map.forEach(null);  // TypeError 例外

Map.prototype[@@iterator]【イテレータオブジェクト作成】

メモ

構文

Map.[@@iterator]( )

 キーと値から成るイテレータオブジェクト (for-of または next() で繰り返し)
for (const item of Map) {

}

var map = new Map();
map.set(0, null);
map.set(1, "ONE");
map.set("two", 2);
map.set("abc", "ABC");
console.log("map.size =", map.size);
// 出力:map.size = 4
var mapIter1 = map[Symbol.iterator]();
for (var item of mapIter1) {
  console.log(item);
}
// 出力:[0, null]
// 出力:[1, "ONE"]
// 出力:["two", 2]
// 出力:["abc", "ABC"]

var mapIter2 = map[Symbol.iterator]();
for (var i = 0; i < map.size; i++) {
  console.log(mapIter2.next().value);
}
// 出力:[0, null]
// 出力:[1, "ONE"]
// 出力:["two", 2]
// 出力:["abc", "ABC"]

Map.prototype.entries【イテレータオブジェクト作成】

メモ

構文

Map.entries( )

 キーと値から成るイテレータオブジェクト

var map = new Map();
map.set(0, null);
map.set(1, "ONE");
map.set("two", 2);
map.set("abc", "ABC");

var mapIter1 = map.entries();
for (var item of mapIter1) {
  console.log(item);
}
// 出力:[0, null]
// 出力:[1, "ONE"]
// 出力:["two", 2]
// 出力:["abc", "ABC"]

var mapIter2 = map.entries();
for (var i = 0; i < map.size; i++) {
  console.log(mapIter2.next().value);
}
// 出力:[0, null]
// 出力:[1, "ONE"]
// 出力:["two", 2]
// 出力:["abc", "ABC"]

for (var [key, value] of map.entries()) {
  console.log("[" + key + "]:" + value);
}
// 出力:[0]:null
// 出力:[1]:ONE
// 出力:[two]:2
// 出力:[abc]:ABC

Map.prototype.keys【キー要素イテレータ作成】

メモ

構文

Map.keys( )

 キー要素のイテレータ

var map = new Map();
map.set(0, null);
map.set(1, "ONE");
map.set("two", 2);
map.set("abc", "ABC");

var keys1 = map.keys();
for (var key of keys1) {
  console.log(key);
}
// 出力:0
// 出力:1
// 出力:two
// 出力:abc

var keys2 = map.keys();
for (var i = 0; i < map.size; i++) {
  console.log(keys2.next().value);
}
// 出力:0
// 出力:1
// 出力:two
// 出力:abc

Map.prototype.values【値要素イテレータ作成】

メモ

構文

Map.values( )

 値要素のイテレータ

var map = new Map();
map.set(0, null);
map.set(1, "ONE");
map.set("two", 2);
map.set("abc", "ABC");

var values1 = map.values();
for (var value of values1) {
  console.log(value);
}
// 出力:null
// 出力:ONE
// 出力:2
// 出力:ABC

var values2 = map.values()();
for (var i = 0; i < map.size; i++) {
  console.log(values2.next().value);
}
// 出力:null
// 出力:ONE
// 出力:2
// 出力:ABC