【初心者】Paiza問題集「辞書データの順序」の解答例に対する疑問
Q&A
Closed
解決したいこと
Paiza問題集「辞書データの順序」の解答例(JavaScript)に疑問があるため、詳しい方に解説をお願いしたいです。
解答例
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
const n = Number(lines[0]);
const m = Number(lines[n + 1]);
const dict = new Map();
const array = [];
for (let i = 1; i <= n; i++) {
array.push(lines[i]);
dict.set(lines[i], 0);
}
for (let i = n + 2; i < n + m + 2; i++) {
const p = lines[i].split(" ")[0];
const a = Number(lines[i].split(" ")[1]);
if (dict.get(p)) {
dict.set(p, dict.get(p) + a);
} else {
dict.set(p, a);
}
}
array.sort();
array.forEach((name) => {
console.log(dict.get(name));
});
わからないこと
①以下の部分の if (dict.get(p)) が何を意味しているかがわかりません。
攻撃の情報(lines[i])の中に、攻撃を受けるプレイヤーの名前が入っていればダメージ値を追加するということでしょうか?
dict.get(p)でプレイヤーの初期ダメージ値を得る意図が理解できていません。
if (dict.get(p)) {
dict.set(p, dict.get(p) + a);
} else {
dict.set(p, a);
}
②以下の部分について、arrayをアルファベット順にソートして、forEach()メソッドを使い、各プレイヤーの名前に対応するダメージ値を取得し、出力していることはなんとなくわかりますが、forEachの引数のnameが具体的に何を指しているのかがわかりません。
array.forEach((name) => {
console.log(dict.get(name));
});