接收不同的数组元素时数组中的相同JSON对象

埃里克蹄

在我的NodeJS应用程序中,我在jade中获得了一个JSON对象(效果很好)。在这里,我尝试仅收集(srcTweets)相关数据,并将其返回到新的JSON对象(stgTweets)中。我将其用于动态表。

在这里,我先使用以下脚本:

    var srcTweets = [];
    var srcTweets = !{JSON.stringify(tweets)};
    var aantalSrcTweets = srcTweets.length;

    //Loop throug all tweets and collect all relevant elementen from srcTweet:
    var stgTweet = {}
    var stgTweets = [];
    console.info('----------START LOOP--------------------');
    for(var i = 0; i < aantalSrcTweets; i++){
        console.info(i);

        stgTweet.Id = srcTweets[i]._id;
        stgTweet.userId = srcTweets[i].user.id;
        stgTweet.userFollowerCount = srcTweets[i].user.followers_count;
        stgTweet.userFriendCount = srcTweets[i].user.friends_count;
        stgTweet.userFavouritesCount = srcTweets[i].user.favourites_count;
        stgTweet.text = srcTweets[i].text;
        stgTweet.coordinates = srcTweets[i].coordinates;
        stgTweet.userLocation = srcTweets[i].user.location;

        stgTweets[i] = stgTweet;

        console.info(stgTweets[i]);
        console.info(i);
    }
    console.info('----------END LOOP--------------------');

    //here i get the same items
    console.info(stgTweets[0]);
    console.info(stgTweets[1]);

当我打印数组“ stgTweet [0]和stgTweet [1]”的不同索引号时,将显示相同的数据。我试图通过在for循环中记录元素来弄清楚,但这看起来还不错。而且我真的不知道在哪里可以找到更好的选择。

我如何用不同的对象而不是同一对象填充数组,以上脚本中发生了什么。

这是srcTweets的示例:

[
   Object   {
      _id="56e19eb1ac5e621e0797c423",
      truncated=false,
      text="@Model_Symphony nu ja,
      s... prima Energiequelle...",
      more...
   },
   Object   {
      _id="56e1a73eac5e621e0797c424",
      truncated=false,
      text="Vandaag aangekondigd doo...",
      more...
   },
   Object   {
      _id="56e1a7b4ac5e621e0797c425",
      truncated=false,
      text="Mooi bedrijfsbezoek aan ...",
      more...
    }
]
mscdex

原因是因为您要对数组中的每个元素重复使用同一对象,并且对象是通过Javascript中的引用分配的,所以stgTweets[0] === stgTweets[1]

相反,您可以做的是在循环移动stgTweet声明(或如下所示直接重新分配值),以便为每个数组元素创建一个新对象:

var stgTweets = new Array(aantalSrcTweets);
for (var i = 0; i < aantalSrcTweets; i++){
  stgTweets[i] = {
    Id: srcTweets[i]._id,
    userId: srcTweets[i].user.id,
    userFollowerCount: srcTweets[i].user.followers_count,
    userFriendCount: srcTweets[i].user.friends_count,
    userFavouritesCount: srcTweets[i].user.favourites_count,
    text: srcTweets[i].text,
    coordinates: srcTweets[i].coordinates,
    userLocation: srcTweets[i].user.location
  };
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章