嵌套数据集中的映射值

问题描述 投票:0回答:1

我正在尝试从特定数据集中映射某些值,但无法获取所有数据。

*数据集*

 this.medOptions = [
        {
          "selectedMAP": [
            {
              "mapId": 1,
              "mapName": "medtest3",
              "options": [
                {
                  "optionId": 1,
                  "optionName": "medoptiontest3",
                  "optionPrice": 1000
                }
              ]
            },
            {
              "mapId": 2,
              "mapName": "medtest4",
              "options": [
                {
                  "optionId": 2,
                  "optionName": "medoptiontest4",
                  "optionPrice": 2000
                }
              ]
            }
          ]
        }
     ]

地图功能

 initDynamicMedicalAidModel(): TemplateDynamicMedicalAid {
    return {
      dynamicPlanOptions: this.medOptions.map(x => ({
        isSelected: false,
        name: x.selectedMAP[0].options[0].optionName,
        amount: x.selectedMAP[0].options[0].optionPrice
      }))
    };
 }

目前,我可以使用[0]来获取第一组值,但是正在努力地动态获取它们。

模型

export interface TemplateDynamicMedicalAid {
  dynamicPlanOptions: Array<{ isSelected: boolean, name: string, amount: number }>;
}

TS

 @Input() medicalAidDynamic: TemplateDynamicMedicalAid;

HTML

 <div *ngFor="let plan of medicalAidDynamic.dynamicPlanOptions; let index = index;" class="line">
        <p-checkbox 
          binary="true" 
          [disabled]="mode == 'view'" 
          [(ngModel)]="medicalAidDynamic.dynamicPlanOptions[index].isSelected" >
        </p-checkbox> 
        {{ plan.providerName }}: {{ plan.name }} -  R{{ plan.amount | number:'':'en' }}
      </div>
 </div>

如何在map函数中获取数据集中的所有值?

angular
1个回答
1
投票

而不是在this.medOptions上循环,您应该在medOptions[0].selectedMAP上循环以映射数据。

const medOptions = [
        {
          "selectedMAP": [
            {
              "mapId": 1,
              "mapName": "medtest3",
              "options": [
                {
                  "optionId": 1,
                  "optionName": "medoptiontest3",
                  "optionPrice": 1000
                }
              ]
            },
            {
              "mapId": 2,
              "mapName": "medtest4",
              "options": [
                {
                  "optionId": 2,
                  "optionName": "medoptiontest4",
                  "optionPrice": 2000
                }
              ]
            }
          ]
        }
     ];
     
    function getObj(arr){
     return {
      dynamicPlanOptions: medOptions[0].selectedMAP.map(x => ({
        isSelected: false,
        name: x.options[0].optionName,
        amount: x.options[0].optionPrice
      }))
    };
    } 
 let y = getObj(medOptions) ;
 console.log(y);

P.S:仅当medOptions仅具有一个元素时,此功能才有效。

© www.soinside.com 2019 - 2024. All rights reserved.