【发布时间】:2019-03-19 19:50:14
【问题描述】:
我正在尝试使用以下代码将一些对话消息推送到数组:
myConversations: IConversation[] = [];
myConversationMessage: IConversationMessages = {
conversationId: 0,
messageId: 0,
messageText: ''
};
myConversationMessages: IConversationMessages[] = [];
this.conversationService.getConversations().subscribe(conversations => {
this.myConversations = conversations;
for (let i of this.myConversations) {
this.myConversationMessage.conversationId = i.conversationId;
for (let j of i.messages) {
this.myConversationMessage.messageId = j.messageId;
this.myConversationMessage.messageText = j.messageText;
this.myConversationMessages.push(this.myConversationMessage);
}
}
console.log(this.myConversationMessages);
});
我正在从 JSON 对象中检索对话和其中的消息。 不是将每条消息推送到 myConversationMessages 数组,而是在控制台中输出以下内容:
0
conversationId: 2
messageId:2
messageText: "testing"
1
conversationId: 2
messageId:2
messageText: "testing"
2
conversationId: 2
messageId:2
messageText: "testing"
3
conversationId: 2
messageId:2
messageText: "testing"
所以最终的“对话”对象是覆盖每个数组元素。
谁能告诉我为什么我的代码会这样?提前非常感谢
附:如果可以解决我的问题,我可以上传更多代码。
【问题讨论】:
-
另外,如果我将 console.log(j.messageId + 'j.messageText') 放在内部 For 循环中,则会打印出正确的消息详细信息。 IE。最终对象不重复,就像在上面的数组中一样