Angular 筛选器方法中的未定义属性

Angular 筛选器方法中的未定义属性,angular,Angular,我对以下方法有异议。出现以下错误无法读取未定义的属性“selectedMAP” const selectedPlan = {"name": "basic", "amount": 1000} let dependantsCost = 0; for (let i = 0; i < this.planCosts[0].selectedMAP.length; i++) { for (let j = 0; j < this.planCosts[0].selectedMAP[i].

我对以下方法有异议。出现以下错误
无法读取未定义的属性“selectedMAP”

const selectedPlan = {"name": "basic", "amount": 1000}
  let dependantsCost = 0;
  for (let i = 0; i < this.planCosts[0].selectedMAP.length; i++) {
   for (let j = 0; j < this.planCosts[0].selectedMAP[i].options.length; j++) {
    if (selection.medicalAid.numberOfAdultDependants > 0) {
       const costForAdultDependant = this.planCosts.filter(x => x.selectedMAP[i].options[j].optionName.toLowerCase() == selectedPlan.name.toLowerCase())[0].selectedMAP[i].options[j].adultDependantAmount;
       const numberOfAdultDependants = selection.medicalAid.numberOfAdultDependants;
       dependantsCost += numberOfAdultDependants * costForAdultDependant;
    } 
  }
}
此.planCosts[0]与此相等

{
  "corporateId": "a682fafc-372a-4bbf-9b42-fe8b35cc437f",
  "selectedMAP": [
    {
      "mapId": 32,
      "mapName": "one",
      "active": true,
      "options": [
        {
          "optionId": 49,
          "optionName": "basic",
          "memberAmount": 1000,
          "adultDependantAmount": 500,
          "childDependantAmount": 500,
          "active": true
        },
        {
          "optionId": 50,
          "optionName": "advanced",
          "memberAmount": 2000,
          "adultDependantAmount": 1000,
          "childDependantAmount": 2000,
          "active": true
        }
      ]
    },
    {
      "mapId": 33,
      "mapName": "two",
      "active": true,
      "options": [
        {
          "optionId": 51,
          "optionName": "lite",
          "memberAmount": 1000,
          "adultDependantAmount": 500,
          "childDependantAmount": 500,
          "active": true
        },
        {
          "optionId": 52,
          "optionName": "heavy",
          "memberAmount": 2000,
          "adultDependantAmount": 500,
          "childDependantAmount": 500,
          "active": true
        }
      ]
    }
  ]
}

你知道为什么这会给我一个错误吗?

这部分给出了错误
this.planCosts.filter(…)[0]。已选择地图[i]
, 当过滤输出的长度变为零时。您可以这样使用它来避免错误

const lenOfFiltered = this.planCosts.filter(...).length;
if (lenOfFiltered ) {
    this.planCosts.filter(...)[0].selectedMAP[i].options[j].adultDependantAmount;
}

谢谢大家!

这部分给出了错误
this.planCosts.filter(…)[0]。已选择地图[i]
, 当过滤输出的长度变为零时。您可以这样使用它来避免错误

const lenOfFiltered = this.planCosts.filter(...).length;
if (lenOfFiltered ) {
    this.planCosts.filter(...)[0].selectedMAP[i].options[j].adultDependantAmount;
}

谢谢大家!

您是否正确地将this json分配给了planCosts?当您调用此方法时,this.planCosts[0]未定义,您是如何得到它的?@FedMice我已经更新了问题,以显示this.planCosts[0]给出了什么。我从一个端点得到这个call@Indrajeet我已经更新了问题,以显示此.planCosts[0]给出了什么问题在于筛选器行,应用筛选器后应始终检查长度您是否已将此json正确分配给planCosts?当您调用此方法时,此.planCosts[0]未定义,您是如何获得的?@FedMice我已更新了问题,以显示此.planCosts[0]提供了什么。我从一个端点得到这个call@Indrajeet我已经更新了问题,以显示这是什么。planCosts[0]给定问题在于过滤线,应用过滤后,您应该始终检查长度