最后一个数组字典对象是空的 - 节点JS

时间:2013-09-05 15:04:20

标签: javascript node.js webstorm

我遇到了一个奇怪的问题。我循环遍历一系列消息对象,其中包含各种信息,包括日期,主题数据和用户内容。对于每个索引,我抓取三个项目并创建一个字典然后被推入一个新的数组。循环完成后,新数组具有所有正确的信息,但最后一个索引除外。在最后一个索引中的三个字典值中,最后一个项(日期对象)为空。我通过循环使用forEach作为替代方案解决了这个问题:

原始的非工作方法:

var tempArray = [];  

for(var k = 0; k < msgArray.length; k++) {
     var newDict = {msg:msgArray[k], topId:msgArray[k].topicId, created:msgArray[k].dateTime};
     tempArray.push(newDict);
}

替代工作方法:

var tempArray = [];

msgArray.forEach(function(messa){
    var newDict = {msg:messa, topId:messa.topicId, created:messa.dateTime};
    tempArray.push(newDict);
});

从调试器捕获: bad temp array

从调试器捕获替代方法: good temp array

解决方法运行正常,但如果有人可以解释为什么会发生这种情况会很好,仅仅是为了我自己的学习/好奇心。我感谢任何评论。谢谢。

编辑:虽然看起来msgArray看起来有点可疑,但它是每个索引中有效内容的mill数组的运行...结构如下:

msgArray [0] - 消息(对象) - topicId(String) - dateTime(日期)

......等等。我想如果原始数组存在问题,它会影响解析为字典的两种方法,但事实并非如此。部分原因是这种奇怪的发生。

0 个答案:

没有答案