我有一个包含键对象和值(始终是对象)的Map。 我想通过传递的索引对象获取此地图的值,但它始终返回 undefined 。
这是一项调查,取决于时间表ID和问题ID。我的目的是获取时间表和问题的选定答案。
我以这种方式尝试
export interface KeyAnswer {
idSchedule: number;
idQuestion: number;
}
mapSelectedAnswer: Map<KeyAnswer, Partial<Answer>> = new Map<KeyAnswer, Partial<Answer>();
this.mapSelectedAnswer.set({ idSchedule: this.schedule, idQuestion:value }, answer);
const answerSelected: Partial<Answer> = this.mapSelectedAnswer.get({ idSchedule: idSchedule, idQuestion: idQuestion});
但是我总是得到 undefined 。
答案 0 :(得分:0)
好吧,这是因为您试图将复杂的对象用作键。当执行该相等性检查时,将对两个对象之间的引用进行检查。当您尝试将其登录到控制台时,它将始终记录为false:
{ idSchedule: this.schedule, idQuestion:value } === { idSchedule: this.schedule, idQuestion:value }
您可以做的是用一个变量保存键,这根本不可行。或将您的密钥转换为字符串,然后使用JSON.stringify
来创建密钥,如下所示:
mapSelectedAnswer: Map<string, Partial<Answer>> = new Map<string, Partial<Answer>();
this.mapSelectedAnswer.set(JSON.stringify({ idSchedule: this.schedule, idQuestion:value }), answer);
const answerSelected: Partial<Answer> = this.mapSelectedAnswer.get(JSON.stringify({ idSchedule: idSchedule, idQuestion: idQuestion}));