コンテンツにスキップ

JavaScript/Map/prototype/keys

出典: フリー教科書『ウィキブックス(Wikibooks)』

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]