【问题标题】:Javascript ignore object if no data如果没有数据,Javascript 会忽略对象
【发布时间】:2022-08-13 00:15:05
【问题描述】:

我正在为我的 discord.js 命令从 pokeAPI 中提取 Pokémon 的类型。如果神奇宝贝有两种类型,它会正常工作,但是当神奇宝贝只有一种类型时我会遇到问题。

我在我的文件中定义它们:

常量 type1 = 类型[0].type.name;
常量 type2 = 类型[1].type.name;

并将它们加载到我的嵌入中:

{
名称:\“类型\”,
值:`${type1},${type2}`,
内联:假,
},

API数据:

一种类型

\“类型\”:[
    {
      \"插槽\": 1,
      \“类型\”: {
        \"姓名\": \"正常\",
        \"url\": \"https://pokeapi.co/api/v2/type/1/\"
      }
    }
  ],

两种类型

\“类型\”:[
    {
      \"插槽\": 1,
      \“类型\”: {
        \"名称\": \"毒药\",
        \"url\": \"https://pokeapi.co/api/v2/type/4/\"
      }
    },
    {
      \"插槽\": 2,
      \“类型\”: {
        \"姓名\": \"飞行\",
        \"url\": \"https://pokeapi.co/api/v2/type/3/\"
      }
    }
  ],

当我尝试使用一种类型的神奇宝贝运行我的命令时,我在控制台中收到以下错误:TypeError: Cannot read properties of undefined (reading \'type\')

我想我必须在嵌入中做一些事情来忽略第二种类型,如果它不存在,但我无法弄清楚。我也尝试了以下方法,但 api 没有返回任何内容,甚至为 null:

`${type1}, ${type2 == 空? ```:`${type2}`}`

谁能在正确的轨道上帮助我?

  • 为什么valueproperty 的内容是字符串? (如果它可以有多个值,为什么它是value 而不是values?)。使它成为一个数组并调整您的设置,以便它可以处理一个数组并且您的问题就消失了。

标签: javascript api discord


【解决方案1】:

在这种情况下,似乎缺少数组中的第二项(索引 1)。所以你需要检查数组是否足够长。

const type2 = types.length>1 ? types[1].type.name : null;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多