/
pokeTypes.js
57 lines (44 loc) · 1.51 KB
/
pokeTypes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const URL = "https://pokeapi.co/api/v2/type";
const generateTypeMatchup = async () => {
const cache = {};
const typesData = await fetch(URL);
const { results } = await typesData.json();
for (let i = 0; i < results.length; i++) {
const typeData = await fetch(results[i].url);
const { damage_relations } = await typeData.json();
cache[results[i].name] = damage_relations;
}
return (type) => {
const pokemonTypeCache = cache[type];
if (!pokemonTypeCache) {
console.log(
`${type} is not a valid Pokémon type. Are we still talking about Pokemon? \n`
);
return;
}
let result = `${type} is weak against `;
for (let i = 0; i < pokemonTypeCache.double_damage_from.length; i++) {
if (i === pokemonTypeCache.double_damage_from.length - 1) {
result += `and ${pokemonTypeCache.double_damage_from[i].name}`;
} else {
result += `${pokemonTypeCache.double_damage_from[i].name}, `;
}
}
result += ". Strong against ";
for (let i = 0; i < pokemonTypeCache.double_damage_to.length; i++) {
if (i === pokemonTypeCache.double_damage_to.length - 1) {
result += `and ${pokemonTypeCache.double_damage_to[i].name}.`;
} else {
result += `${pokemonTypeCache.double_damage_to[i].name}, `;
}
}
console.log(`${result} \n`);
};
};
(async () => {
const typeMatchup = await generateTypeMatchup();
typeMatchup("grass");
typeMatchup("fire");
typeMatchup("Cassidoo");
typeMatchup("Chris");
})();