Map.prototype.keys()

編集

Map.prototype.keys() は、Mapオブジェクトのキーを反復処理するためのイテレータを返すメソッドです。

構文

編集
map.keys()

返り値

編集

Mapオブジェクトのキーを順次返す Iterator オブジェクト

説明

編集
  • Mapオブジェクトの各キーを順番に取得できるイテレータを生成
  • 元のMapオブジェクトを変更せずに反復処理が可能
  • ECMAScript 2015 (ES6) で導入されたメソッド

使用例

編集

基本的な使用

編集
const map = new Map([
    ['a', 1],
    ['b', 2],
    ['c', 3]
]);
const iterator = map.keys();

console.log(iterator.next().value); // 'a'
console.log(iterator.next().value); // 'b'
console.log(iterator.next().value); // 'c'

for...of ループでの使用

編集
const map = new Map([
    ['name', 'John'],
    ['age', 30],
    ['city', 'New York']
]);

for (const key of map.keys()) {
    console.log(key); // 'name', 'age', 'city' を順に出力
}
const map = new Map([
    ['x', 10],
    ['y', 20],
    ['z', 30]
]);
const keys = [...map.keys()];
console.log(keys); // ['x', 'y', 'z']

特殊な動作 =

編集

キーの型の多様性

編集
const map = new Map([
    [1, 'number key'],
    ['string', 'string key'],
    [true, 'boolean key'],
    [{}, 'object key']
]);

for (const key of map.keys()) {
    console.log(typeof key);
}
// 出力:
// 'number'
// 'string'
// 'boolean'
// 'object'

注意点

編集
  • イテレータは一度しか使用できません
  • 新しい配列を生成するわけではありません
  • 空のMapに対しては空のイテレータを返します
  • キーのみを返し、対応する値は返しません

ブラウザ互換性

編集
  • モダンブラウザで広くサポート
  • Internet Explorer では利用不可
  • Node.js 4.0.0 以降でサポート

関連メソッド

編集

仕様

編集
  • ECMAScript 2015 (ECMA-262)

高度な使用例

編集

キーの型による条件分岐

編集
const map = new Map([
    [1, 'number'],
    ['text', 'string'],
    [true, 'boolean']
]);

const numberKeys = [...map.keys()].filter(key => typeof key === 'number');
console.log(numberKeys); // [1]