首页 > 解决方案 > 如何在 nodejs 中解析 PokeAPI 的 [Obect] 和 [Array]

问题描述

这是我在 stackoverflow 上的第一篇文章。
我目前正在开发一个不和谐的机器人。我现在正在尝试添加命令以查看口袋妖怪统计信息。

到目前为止,我已经能够获得口袋妖怪的名称、ID 和重量。这很好,但我觉得可以从 API 中获取更多数据。

这是我当前的代码:

const Discord = require('discord.js');
const { RichEmbed } = require('discord.js');
const fetch = require('node-fetch');
const Command = require('../../../base/Command.js');

class pokemonLookup extends Command {
    constructor(client) {
    super(client, {
        name: 'pokesearch',
        description: 'Look up a pokemon!',
        aliases: ['ps'],
        guildOnly: false,
        ownerOnly: false,
        category: 'Pokemon',
        extended: 'Search some information about any pokemon. (Correct spelling is required.'
    })
    }

    async run(message, args) {

    let pokemon = args[0];

    fetch(`https://pokeapi.co/api/v2/pokemon/${pokemon}`)
        .then(res => res.json())
        .then(data => {
        const name = data.species.name;
        const url = data.species.url;
        const weight = data.weight / 10;
        const em = new RichEmbed();
        em.setTitle('Pokemon Stats');
        em.setDescription(`Name: [${name.toUpperCase()}](${url})`);
        em.addField('Pokedox Number', data.id);
        em.addField('Weight (kg)', weight);
        em.setThumbnail(data.sprites.front_default);

        message.channel.send(em)
        })
    }
}
module.exports = pokemonLookup

如果我打印(data)到控制台,我会得到:

moves: 
   [ { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] },
     { move: [Object], version_group_details: [Array] }
]

而且由于在他们的网站上move,他们version_group_details清楚地列出了,我想知道如何去检索这些信息。

标签: arraysnode.jsjsondiscord.js

解决方案


您可以通过执行以下操作轻松记录此信息:

console.log(data.moves[0].move)
console.log(data.moves[0].version_group_details)

它会按照以下方式返回一些东西:

>> {......} // move
>> [......] // version_group_details

推荐阅读