UNIT 4 講義ルート

DRILL 07 / 再利用とデータ構造

Mapで出現回数を数える

Mapから現在の回数を読み、単語が現れるたびに値を更新します。

目安 10分 TypeScript Map<K, V> / for...of
COURSE ROUTETypeScript Foundation
0 / 8
MISSION 07講義ルートを確認
  1. UNIT 1 · DRILL 01基本型OPEN
  2. UNIT 1 · DRILL 02関数OPEN
  3. UNIT 2 · DRILL 03配列OPEN
  4. UNIT 2 · DRILL 04オブジェクトOPEN
  5. UNIT 3 · DRILL 05ユニオン型OPEN
  6. UNIT 3 · DRILL 06タプルOPEN
  7. UNIT 4 · DRILL 07MapACTIVE
  8. UNIT 4 · DRILL 08ジェネリクスOPEN

YOUR TASK

countWords() を完成させる

単語の配列を受け取り、各単語の出現回数をMapで返してください。大文字と小文字は区別します。

入力
words は文字列配列です。
出力
単語をキー、出現回数を値に持つ Map<string, number> を返します。

BEFORE CODING

初回と二回目以降を同じ式で数える

Map は、単語をキー、回数を値として保存できます。初めて見た単語では get() が undefined を返すため、0で補ってから1を足します。この形なら初回だけの分岐は要りません。

["ts", "js", "ts"] → Map { "ts" => 2, "js" => 1 }
01

get で現在の回数を読む

counts.get(word) は、登録済みなら number、未登録なら undefined を返します。?? 0 を続けると、どちらの場合も数値として計算できます。

02

set で同じキーの値を更新する

counts.set(word, nextCount) は、新しい単語を追加し、登録済みの単語なら値を上書きします。ループ後の Map がそのまま答えです。

SYNTAX RECALL

確認する構文

const counts = new Map<string, number>();
counts.set("ts", (counts.get("ts") ?? 0) + 1);
  • Mapのキー型と値型を指定する
  • for...of で配列の値を順に読む
  • 未登録の値を ?? 0 で補う

STEPWISE HINTS

ヒント

01最初の一手

`new Map<string, number>()` で空のMapを作ります。

02処理の組み立て

各単語について現在の回数を get し、1を加えて set します。

03コードの形

未登録なら get の結果は undefined なので、`?? 0` を使います。

AFTER ACCEPTED

解説

AC 後に解説が開きます

まずは自分の言葉で方針を説明し、コードに落としてみましょう。