コンテンツにスキップ

JavaScript/Map/prototype/values

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

Map.prototype.values()

[編集]

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

構文

[編集]
map.values()

返り値

[編集]

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

説明

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

使用例

[編集]

基本的な使用

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

console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3

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

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

for (const value of map.values()) {
    console.log(value); // 'John', 30, 'New York' を順に出力
}
const map = new Map([
    ['x', 10],
    ['y', 20],
    ['z', 30]
]);
const values = [...map.values()];
console.log(values); // [10, 20, 30]

特殊な動作

[編集]

値の型の多様性

[編集]
const map = new Map([
    ['number', 42],
    ['string', 'Hello'],
    ['boolean', true],
    ['object', { key: 'value' }],
    ['array', [1, 2, 3]]
]);

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

注意点

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

ブラウザ互換性

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

関連メソッド

[編集]

仕様

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

高度な使用例

[編集]

値の型によるフィルタリング

[編集]
const map = new Map([
    ['a', 1],
    ['b', 'text'],
    ['c', true],
    ['d', 42]
]);

const numberValues = [...map.values()].filter(value => typeof value === 'number');
console.log(numberValues); // [1, 42]

値の合計計算

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

const totalFruits = [...map.values()].reduce((sum, count) => sum + count, 0);
console.log(totalFruits); // 15