Skip to content

reduce (Map)

Mapのエントリを反復処理してコールバック関数を適用し、単一の値に縮小します。

typescript
const result = reduce(map, callback, initialValue);

INFO

この関数は、他のコレクション型の類似関数との潜在的な競合を避けるため、es-toolkit/mapから独占的に利用できます。

使用法

reduce(map, callback, initialValue?)

各エントリから結果を蓄積してMapを単一の値に変換したい場合は reduce を使用してください。各エントリを処理してアキュムレータを更新するコールバック関数を提供してください。初期値が提供されると、アキュムレータの開始値として使用されます。初期値が提供されずMapが空の場合、TypeErrorがスローされます。

typescript
import { reduce } from 'es-toolkit/map';

const map = new Map([
  ['a', 1],
  ['b', 2],
  ['c', 3],
]);

const result = reduce(map, (acc, value) => acc + value, 0);
// 結果: 6

様々な方法でMapを縮小できます。

typescript
import { reduce } from 'es-toolkit/map';

// 初期値を使用して合計を計算します。
const scores = new Map([
  ['alice', 95],
  ['bob', 87],
  ['charlie', 92],
]);

const totalScore = reduce(scores, (acc, score) => acc + score, 0);
// 結果: 274

// 初期値なし(最初の値を使用)
const numbers = new Map([
  ['a', 10],
  ['b', 20],
]);

const sum = reduce(numbers, (acc, value) => acc + value);
// 結果: 30 (最初の値10から開始)

// Mapからオブジェクトを構築します。
const settings = new Map([
  ['theme', 'dark'],
  ['lang', 'en'],
  ['notifications', true],
]);

const config = reduce(settings, (acc, value, key) => ({ ...acc, [key]: value }), {} as Record<string, any>);
// 結果: { theme: 'dark', lang: 'en', notifications: true }

パラメータ

  • map (Map<K, V>): 縮小するMapです。
  • callback ((accumulator: A, value: V, key: K, map: Map<K, V>) => A): 各エントリを処理してアキュムレータを更新する関数です。
  • initialValue (A, オプション): アキュムレータの初期値です。提供されない場合、Mapの最初の値が使用されます。

戻り値

(A): 最終的に蓄積された値を返します。

例外

(TypeError): Mapが空で初期値が提供されない場合にスローされます。

MIT ライセンスの下で配布されています。