首页 > 解决方案 > 遍历地图打字稿

问题描述

我有一个名为Saveck(aid: number)

Saveck(aid: number) {
    const modelsToChange: any[] = [];
    const model: any = {};
    for (const value of this.submittedCheckAnswers.values()) {
          model.AssignmentId = assignmentId;
          model.QaId = value.qaId;
          model.Action = 'Insert';
          console.log(model);
          modelsToChange.push(model);
    }
    console.log(modelsToChange);
}

submitCheckAnswers 是在进入此 for 循环之前已正确初始化的映射。

console.log(this.submittedCheckAnswers) will give the following result:

Map(2) {2 => {…}, 3 => {…}}
  [[Entries]]
    0: {2 => Object}
      key: 2
      value:
        answerId: 5
        answerContext: "9"
        aOrdinal: 2
        isAnswer: false
        ngAnswerId: "Answer2"
        ngAnswerField: ""
        qaId: 56
        __proto__: Object
    1: {3 => Object}
      key: 3
      value:
        answerId: 6
        answerContext: "8"
        aOrdinal: 3
        isAnswer: false
        ngAnswerId: "Answer3"
        ngAnswerField: ""
        qaId: 57

for 循环内的命令console.log(model);给出以下结果://第一次

{AssignmentId: 1, QaId: 56, Action: "Insert"}
  AssignmentId: 1
  QaId: 57
  Action: "Insert"

// 第二次

{AssignmentId: 1, QaId: 57, Action: "Insert"}
  AssignmentId: 1
  QaId: 57
  Action: "Insert"

不,我在复制和粘贴第一次指示的对象时没有在QaId中打错字。出于某种奇怪的原因,对象会像这样在控制台上打印{AssignmentId: 1, QaId: 56, Action: "Insert"}QaId: 56但是当我展开对象时

AssignmentId: 1
QaId: 57
Action: "Insert"

QaId 是 57 岁!!!!我似乎无法理解为什么?这 57 被插入到模型中并附加到 modelsToChange。因此,modelsToChange 是错误的。

有人可以向我解释发生了什么吗?

标签: angulartypescript

解决方案


推荐阅读