angular - 遍历地图打字稿
问题描述
我有一个名为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 是错误的。
有人可以向我解释发生了什么吗?
解决方案
推荐阅读
- scala - scala:尾递归函数中的这条线是什么意思?
- reactjs - 使用 react 0.59 但钩子不起作用
- python - Highcharts 图表未显示在 Django 模板 html 中
- tvos - TVOS 等价于 UIActivityViewController
- python - 在 Python 3 map() 中使用多个函数
- ssis - 由于通过链接服务器连接的大量记录,SSIS 包失败
- javascript - 为什么 Vue.js 有事件而不仅仅是函数道具?
- reactjs - 使用 Firebase (FCM) 的 PWA ReactJS 推送通知
- java - Android 上的模拟 API 响应
- vue.js -
not 没有像锚标签那样提供内部链接