【发布时间】:2020-04-15 07:49:43
【问题描述】:
我使用 POKEapi 编写了代码,它显示了 150 个口袋妖怪的数量。
我刚开始学习js,这是我在node.js中的第一个应用。
关键是,我需要对它进行分页以显示前任。每页 9 个口袋妖怪。我尝试使用类似的东西,但它似乎不起作用(.js)。
我已经有一个循环,它获得了 150 个带有 pokemon 数据的链接,所以我想我可以通过某种方式实现,这个循环将获得例如 9 个链接,然后显示它,每次迭代都添加计数器,然后开始相同循环但再次更新计数器(在第二个,第三个..)分页。
告诉我你对这件事有什么看法,因为我正在与这个作斗争并且不知道如何做到这一点。
这是我想使用的代码:
const count = 0;
const limit = 9;
const fetchPokemon = (inType) => {
console.log(inType);
const promises = [];
for (let i = 1; i <= 150; i++) {
count++;
const url = `https://pokeapi.co/api/v2/pokemon/${i}`;
promises.push(fetch(url).then((res) => res.json()));
if (count === limit) {
break;
}
}
Promise.all(promises).then((results) => {
let pokemon = results.map((data) => ({
name: data.name,
id: data.id,
image: data.sprites["front_default"],
type: data.types.map((type) => type.type.name).join(", "),
}));
if (typeof inType != "undefined") {
pokemon = pokemon.filter((row) => row.type.includes(inType) === true);
}
console.log(pokemon);
displayPokemon(pokemon);
});
};
const displayPokemon = (pokemon) => {
const pokemonHTMLString = pokemon
.map(
(pokeman) =>
`
<li class="card">
<img class="card-image" src="${pokeman.image}"/>
<h2 class="card-title">${pokeman.id}. ${pokeman.name}</h2>
<p class="card-subtitle">Type: ${pokeman.type}</p>
</li>
`
)
.join("");
pokedex.innerHTML = pokemonHTMLString;
};
现在的工作代码:(.js)
"use-strict";
const pokedex = document.getElementById("pokedex");
const dropdown = document.getElementById("dropdown");
console.log(pokedex);
const fetchPokemon = (inType) => {
console.log(inType);
const promises = [];
for (let i = 1; i <= 150; i++) {
const url = `https://pokeapi.co/api/v2/pokemon/${i}`;
promises.push(fetch(url).then((res) => res.json()));
}
Promise.all(promises).then((results) => {
let pokemon = results.map((data) => ({
name: data.name,
id: data.id,
image: data.sprites["front_default"],
type: data.types.map((type) => type.type.name).join(", "),
}));
if (typeof inType != "undefined") {
pokemon = pokemon.filter((row) => row.type.includes(inType) === true);
}
console.log(pokemon);
displayPokemon(pokemon);
});
};
const displayPokemon = (pokemon) => {
const pokemonHTMLString = pokemon
.map(
(pokeman) =>
`
<li class="card">
<img class="card-image" src="${pokeman.image}"/>
<h2 class="card-title">${pokeman.id}. ${pokeman.name}</h2>
<p class="card-subtitle">Type: ${pokeman.type}</p>
</li>
`
)
.join("");
pokedex.innerHTML = pokemonHTMLString;
};
fetchPokemon();
谢谢
【问题讨论】:
标签: javascript node.js for-loop