Доступ к PokeAPI

Я хотел бы получить доступ к PokeAPI, чтобы получить все приемы, изученные конкретным покемоном на уровне 1. На данный момент

Вот мой js-код:

let userPokemonName = "squirtle"
const pokeData = [];
const url = `https://pokeapi.co/api/v2/pokemon/${userPokemonName}`
pokeData.push(fetch(url).then(res => res.json()))

Promise.all(pokeData).then(results => {
  console.info(results)
  const userPokemonData = results.map(data => ({
    name: data.name,
    id: data.id,
    type: data.types.map(type => type.type.name).join(", "),
    moves: data.moves.map(move => {
      if (move.version_group_details.level_learned_at === 1) {
        return move.move.name
      }
    }).slice(0, 10).join(', ')
  }));
})

На данный момент я просто получаю массив запятых. Массив перемещений - это запятые.

Доступ к PokeAPI

но там должно быть написано ['откат', 'хвост'].

Я пробовал использовать .forEach вместо карты:

 moves: data.moves.forEach(move => {
      if (move.version_group_details.level_learned_at === 1) {
        userPokemonData.push(move.move.name)
      }

но это вернулось неопределенное.

move.version_group_details.level_learned_at === 1, вероятно, никогда не бывает верным - по крайней мере, не для первых 10 ходов - что касается использования .forEach ... ну а что такое userPokemonData? что вы возвращаете из этой функции (в показанном вами коде ничего)
Jaromanda X 20.08.2024 11:56

Я только что проверил API, и Tail-whip — это ход номер 8, значит, он должен это получить?

user26782974 20.08.2024 11:59

вам, вероятно, захочется .filter( ... ).slice(0,10).map( ... ).join(', ') — логика уже есть в вашем коде, вам просто нужно применить ее соответствующим образом

Jaromanda X 20.08.2024 12:00
version_group_details — это массив из множества элементов из того, что я наблюдал, так что вы не можете просто move.version_group_details.level_learned_at === 1
cmgchess 20.08.2024 12:02

Определенно не используйте forEach, если вы хотите, чтобы он что-то вернул.

evolutionxbox 20.08.2024 12:04
I just checked the API and tail-whip is move number 8 so it should be getting that? было бы, если бы move.version_group_details.level_learned_at === 1 ... но этого никогда не происходит
Jaromanda X 20.08.2024 12:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать сокращение следующим образом

let userPokemonName = "squirtle"
const url = `https://pokeapi.co/api/v2/pokemon/${userPokemonName}`
fetch(url)
  .then(res => res.json())
  .then(userPokemonData => {
    //console.info(userPokemonData)
    const { name, id, types, moves } = userPokemonData;
    console.info(name, id, types);
    const movesDetails = moves
      .reduce((acc,move) => {
        if (move?.version_group_details
                ?.some(detail => detail.level_learned_at===1)) {
          acc.push(move.move.name);
        }
        return acc;
      },[])
        
      
    console.info(movesDetails);
      //).slice(0, 10).join(', ')

    });
  

Другие вопросы по теме