私が遭遇した少し奇妙な問題。日付、トピック データ、ユーザー コンテンツなどのさまざまな情報を含むメッセージ オブジェクトの配列をループしています。インデックスごとに 3 つの項目を取得して辞書を作成し、それを新しい配列にプッシュします。ループが完了すると、最後のインデックスを除いて、新しい配列にすべての適切な情報が含まれます。最後のインデックスの 3 つのディクショナリ値のうち、最後の項目 (日付オブジェクト) は null です。次のように代替手段として 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 には怪しいものがあるように見えますが、それは各インデックスに有効なコンテンツを持つミル配列の実行です...次のように構造化されています:
msgArray[0] - メッセージ (オブジェクト) - topicId (文字列) - dateTime (日付)
...等々。元の配列に問題があった場合、辞書に解析する両方の方法に影響すると思いますが、そうではありません。これが非常に奇妙な出来事である理由の一部です。