JavaScript/Map/prototype/keys
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]