You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写JavaScript函数查找包含指定宝可梦的进化前置宝可梦

完善宝可梦进化溯源函数的解决方案

先帮你梳理下原代码里的几个核心问题,再给出调整后的完整版本,这样就能准确找到所有能进化成指定宝可梦的前代啦:

  • 数据集里的next_evolution是对象数组,每个元素都包含name属性,不是直接存字符串,所以不能用includes直接匹配传入的名称
  • 代码里有拼写错误:allPokemo...少了最后一个n,应该是allPokemon
  • 部分宝可梦没有后续进化,next_evolution字段会是undefined,直接访问会报错,得先做存在性判断
  • 直接打印结果不够灵活,最好让函数返回结果数组,方便后续二次处理

下面是完善后的完整函数:

var findPreEvolutionPokemons = function(targetName, allPokemon) {
    // 初始化结果数组,存储所有符合条件的宝可梦
    const result = [];

    // 遍历所有宝可梦,用for...of更安全,避免拿到原型链额外属性
    for (const pokemon of allPokemon) {
        // 先检查当前宝可梦是否有后续进化项,防止报错
        if (pokemon.next_evolution) {
            // 检查后续进化列表里是否包含目标宝可梦,支持大小写不敏感匹配
            const matchesTarget = pokemon.next_evolution.some(evolution => {
                return evolution.name.toLowerCase() === targetName.toLowerCase();
            });

            if (matchesTarget) {
                // 按需收集宝可梦信息,这里示例收集编号、名称、属性
                result.push({
                    id: pokemon.id,
                    name: pokemon.name,
                    type: pokemon.type
                });
            }
        }
    }

    // 可选打印结果,同时返回数组供后续使用
    console.log(`能进化成${targetName}的宝可梦:`, result);
    return result;
};

关键细节说明:

  • 用some()方法替代手动循环,简洁判断进化列表里是否存在目标名称
  • 加入toLowerCase()实现大小写不敏感匹配,避免因输入大小写错误导致找不到结果
  • 返回结构化的结果数组,比单纯打印更实用,方便后续做渲染、筛选等操作

使用示例:

假设你已经获取并解析了数据集为allPokemon数组,调用方式如下:

// 查找所有能进化成Charizard的宝可梦
findPreEvolutionPokemons('Charizard', allPokemon);

内容的提问来源于stack exchange,提问作者Sm Ashhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:52:49