コンテンツにスキップ

JavaScript/Map/prototype/entries

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

Map.prototype.entries()

[編集]

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

構文

[編集]
map.entries()

返り値

[編集]

Mapオブジェクトの [キー, 値] ペアを順次返す Iterator オブジェクト

説明

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

使用例

[編集]

基本的な使用

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

console.log(iterator.next().value); // ['a', 1]
console.log(iterator.next().value); // ['b', 2]
console.log(iterator.next().value); // ['c', 3]

for...of ループでの分割代入

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

for (const [key, value] of map.entries()) {
    console.log(`${key}: ${value}`);
}
// 出力:
// name: John
// age: 30
// city: New York
const map = new Map([
    ['x', 10],
    ['y', 20],
    ['z', 30]
]);
const entries = [...map.entries()];
console.log(entries); 
// [['x', 10], ['y', 20], ['z', 30]]

特殊な動作 =

[編集]

異なる型のキーと値

[編集]
const map = new Map([
    [1, 'number key'],
    ['string', 42],
    [true, { data: 'object' }],
    [Symbol('unique'), [1, 2, 3]]
]);

for (const [key, value] of map.entries()) {
    console.log(`Key type: ${typeof key}, Value type: ${typeof value}`);
}

注意点

[編集]
  • イテレータは一度しか使用できません
  • 新しい配列を生成するわけではありません
  • 空のMapに対しては空のイテレータを返します
  • キーと値の両方を [キー, 値] 形式で返します

ブラウザ互換性

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

関連メソッド

[編集]

仕様

[編集]
  • ECMAScript 2015 (ECMA-262)

高度な使用例

[編集]

オブジェクトへの変換

[編集]
const map = new Map([
    ['a', 1],
    ['b', 2],
    ['c', 3]
]);
const obj = Object.fromEntries(map.entries());
console.log(obj); // { a: 1, b: 2, c: 3 }

フィルタリングと変換

[編集]
const map = new Map([
    ['apple', 5],
    ['banana', 3],
    ['orange', 7],
    ['grape', 2]
]);

// 値が5以上の要素のみを含む新しいMapを作成
const filteredMap = new Map(
    [...map.entries()].filter(([key, value]) => value >= 5)
);
console.log(filteredMap);
// Map { 'apple' => 5, 'orange' => 7 }