DRILL 07 / 再利用とデータ構造
Mapで出現回数を数える
Mapから現在の回数を読み、単語が現れるたびに値を更新します。
COURSE ROUTETypeScript Foundation
0 / 8
YOUR TASK
countWords() を完成させる
単語の配列を受け取り、各単語の出現回数をMapで返してください。大文字と小文字は区別します。
- 入力
- words は文字列配列です。
- 出力
- 単語をキー、出現回数を値に持つ Map<string, number> を返します。
BEFORE CODING
初回と二回目以降を同じ式で数える
Map は、単語をキー、回数を値として保存できます。初めて見た単語では get() が undefined を返すため、0で補ってから1を足します。この形なら初回だけの分岐は要りません。
["ts", "js", "ts"] → Map { "ts" => 2, "js" => 1 } get で現在の回数を読む
counts.get(word) は、登録済みなら number、未登録なら undefined を返します。?? 0 を続けると、どちらの場合も数値として計算できます。
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 後に解説が開きます
まずは自分の言葉で方針を説明し、コードに落としてみましょう。