如何修复这个“forEach of undefined”错误?

问题描述

当我尝试运行此代码时得到 TypeError: Cannot read property 'forEach' of undefined

for (let Sıra_Numarası = 0; Sıra_Numarası < Anlamlar_Liste.length; Sıra_Numarası++) {
    Anlamlar_Liste[Sıra_Numarası].ozelliklerListe.forEach(Özellik => {
        Tepki_Mesajı.addField(`${Sıra_Numarası + 1}. ${Özellik.tam_adi}`,Anlamlar_Liste[Sıra_Numarası].anlam,true)

        console.log(Özellik.tam_adi)
        console.log(Anlamlar_Liste[Sıra_Numarası].ozelliklerListe)
    })
}

Tepki_Mesajı.addField () 方法用于向 discord Embed 消息添加新字段,我认为失败就在这里,因为 console.log () 工作成功并且我在 JSON API 中获取数据。

API 中 Anlamlar_Liste 的值是:

[
  {
    "anlam_id": "4798","madde_id": "9592","anlam_sira": "1","fiil": "0","tipkes": "0","anlam": "Çocuğu olan kadın,ana,valide,kocakarı,mader,nene,aba","gos": "0","ozelliklerListe": [
      {
        "ozellik_id": "19","tur": "3","tam_adi": "isim","kisa_adi": "a.","ekno": "30"
      }
    ]
  },{
    "anlam_id": "4799","anlam_sira": "2","anlam": "Yavrusu olan dişi hayvan","gos": "0"
  }
]

解决方法

数组中的某些对象没有 ozelliklerListe 属性。所以在尝试使用它之前先检查一下。

Anlamlar_Liste.forEach(anlamlar => {
  if (anlamlar.ozelliklerListe) {
    anlamlar.ozelliklerListe.forEach(Özellik => {
      Tepki_Mesajı.addField(`${Sıra_Numarası + 1}. ${Özellik.tam_adi}`,Anlamlar_Liste[Sıra_Numarası].anlam,true)
      console.log(Özellik.tam_adi)
      console.log(Anlamlar_Liste[Sıra_Numarası].ozelliklerListe)
    })
  }
});