我正在尝试从特定数据集中映射某些值,但无法获取所有数据。
*数据集*
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函数中获取数据集中的所有值?
而不是在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
仅具有一个元素时,此功能才有效。