我遇到了一个奇怪的问题。我循环遍历一系列消息对象,其中包含各种信息,包括日期,主题数据和用户内容。对于每个索引,我抓取三个项目并创建一个字典然后被推入一个新的数组。循环完成后,新数组具有所有正确的信息,但最后一个索引除外。在最后一个索引中的三个字典值中,最后一个项(日期对象)为空。我通过循环使用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);
});
从调试器捕获:
从调试器捕获替代方法:
解决方法运行正常,但如果有人可以解释为什么会发生这种情况会很好,仅仅是为了我自己的学习/好奇心。我感谢任何评论。谢谢。
编辑:虽然看起来msgArray看起来有点可疑,但它是每个索引中有效内容的mill数组的运行...结构如下:
msgArray [0] - 消息(对象) - topicId(String) - dateTime(日期)
......等等。我想如果原始数组存在问题,它会影响解析为字典的两种方法,但事实并非如此。部分原因是这种奇怪的发生。