2016-03-26 6 views
0

NodeJSアプリケーションでは、jade内にJSONオブジェクトがあります(これは問題ありません)。ここでは、関連するデータのみを収集し(srcTweets)、これを新しいJSONオブジェクト(stgTweets)に戻そうとしました。ダイナミックテーブルの使用に使用します。異なる配列要素を受け取った場合、同じJSON配列が配列にあります

iは、以下のスクリップ使用ここFORE:

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]); 

iは配列の異なるインデックス番号を印刷 "stgTweet [0]とstgTweet [1]" は、同じデータを示しています。私はforループの要素をログに記録することでそれを把握しようとしましたが、うまく見えます。そして私は本当にどこを見なければならないのか分かりません。

同じオブジェクトの代わりに異なるオブジェクトで配列を塗りつぶすにはどうすればいいですか?上記のスクリプトではどうなりますか?あなたがそうstgTweets[0] === stgTweets[1]、配列内のすべての要素に同じオブジェクトを再利用していると、オブジェクトはJavaScriptで参照することによって割り当てられるため

[ 
    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... 
    } 
] 

答えて

1

理由は次のとおりです。ここで

はsrcTweetsの一例です。あなたの代わりに何ができるか

は、(以下に示すように、直接または単に再割り当て値)新しいオブジェクトが各配列要素のために作成されるように、あなたの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 
    }; 
} 
+0

どうもありがとう!!本当にスマートです。私は4分以内に答えを受け入れることができません。それはあなたのためにそれがうまくいけば、私は約30分を行います:-) –

関連する問題