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

编写JavaScript函数:输入宝可梦弱点,输出对应宝可梦名称

解决宝可梦弱点筛选函数的问题

嘿,我看了你写的宝可梦弱点筛选函数,思路没问题,但有几个关键小坑得修正,我来帮你梳理清楚:

你的代码存在的问题

  • 数组比较逻辑错误:宝可梦的weaknesses是一个数组(比如["Fire", "Psychic"]),用==直接比较两个数组永远不会返回true——因为数组是引用类型,得检查输入的弱点是否包含在这个数组里才行。
  • 变量未声明:循环里的x没有用var/let/const声明,会变成全局变量,很容易引发意外的bug。
  • 功能局限性:你的函数只是打印结果,最好能返回匹配的名称数组,这样后续还能复用这个结果做其他操作。
  • 无容错处理:如果输入为空或者没有匹配的宝可梦,没有对应的提示,用户体验不太好。

修正后的完整代码

function pokemonWeakness(targetWeakness, allPokemon) {
  // 先做输入校验,避免无效参数导致报错
  if (!targetWeakness || !Array.isArray(allPokemon)) {
    console.log("请输入有效的弱点名称和宝可梦数组哦");
    return [];
  }

  // 筛选出包含目标弱点的宝可梦
  const matchedPokemon = allPokemon.filter(pokemon => {
    // 先确保当前宝可梦有weaknesses属性,避免报错
    return pokemon.weaknesses && pokemon.weaknesses.includes(targetWeakness);
  });

  // 提取匹配到的宝可梦名称
  const pokemonNames = matchedPokemon.map(pokemon => pokemon.name);

  // 输出结果提示
  if (pokemonNames.length > 0) {
    console.log(`拥有「${targetWeakness}」弱点的宝可梦有:${pokemonNames.join(', ')}`);
  } else {
    console.log(`没有找到拥有「${targetWeakness}」弱点的宝可梦哦`);
  }

  // 返回结果数组,方便后续复用
  return pokemonNames;
}

// 示例使用方式(假设你已经获取到allPokemon数据源)
// const userInput = prompt('请输入要查询的弱点:');
// pokemonWeakness(userInput, allPokemon);

修正点说明

  1. 用filter结合includes来判断弱点是否存在于宝可梦的弱点数组中,这才是正确的数组包含判断逻辑。
  2. 增加了输入校验,避免传入空值或非数组数据源时出现报错。
  3. 函数返回匹配的名称数组,既保留了控制台输出,又让结果可以被其他逻辑复用。
  4. 用const声明变量,避免全局变量污染,代码更规范。

内容的提问来源于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:38:55