私は特定の期間の特定の投稿に関する情報を追跡するRedditボットを作成しました。そのデータをChart.js
というライブラリにマッピングしています。JSONファイルから最後のインデックスを除くすべてのインデックスを取得できますか?
情報はJSONファイルに保存されます。 2つの投稿を含むファイルの例を次に示します。
[
{"time_scraped": ["2017-04-24 19:12:30", "2017-04-24 19:13:01", "2017-04-24 19:13:23"],
"title": "Le Pen 'steps aside' as party leader",
"downvotes": 0.0,
"subreddit": "news",
"post_id": "67b8ex",
"vote": "up",
"upvotes": [2.0, 2.0, 2.0, 2.0, 2.0]},
{"time_scraped": ["2017-04-24 19:12:30", "2017-04-24 19:13:01", "2017-04-24 19:13:23"],
"title": "10 Astronomical Events That Will Happen In Your Lifetime",
"downvotes": 0.0,
"subreddit": "videos",
"post_id": "67b89w",
"vote": "up",
"upvotes": [2.0]}
]
かなり標準的なJSON設定です!
今、私はこのJSONファイルからデータを取り出してDOMに入力するために、少しjQueryを使用しています。ほとんどのオプション設定を、私は示すことができた - Create a graph...
セクションでは、単になど、グラフの種類に関するいくつかのデータを保持しているポイントの配置
$.getJSON("./graph.json", function(json) {
var list = [];
var obj;
for (var i=0; i<json.length; i++) {
obj = json[i]
var name = "dataChart" + obj.post_id;
var containerName = "graphContainer" + obj.post_id;
$(".graphs").append("<div id='"+containerName+"'></div>");
containerName = "#"+containerName;
$(containerName).append("<canvas id='"+name+"'></canvas>");
var ctx = document.getElementById(name);
var dataChart = new Chart(ctx, {
/*
Create a graph...
*/
});
}
});
:のようにこのコード、マイナス1は、グラフを作成する部分は、見えます必要なら。私はこのスレッドにとって重要ではないと思います。
問題はjQueryコードで発生します。最後の投稿までは順調に進んでいきます。例えば、上の2つの投稿のうち、最初のもののためにコンテナdiv
とcanvas
が作成され、うまく表示されます。ただし、最後の配列に到達するたびに、コンテナdiv
が作成されますが、その内部にはcanvas
は作成されません。これは任意の数のグラフの場合に当てはまります。メインのJSON配列の中に投稿データを含む配列が20個ある場合は、コンテナdiv
が20個、唯一19 canvas
が作成されます。
データを間違ってループしていますか?
多分それは早すぎる私にとってはまだですが、それは最後のインデックスが表示されていない、なぜ私は私の人生のために把握することはできません。
さて、私たちはあなたの問題を見つけることができません。私たちはあなたが働いている正確な反応を持っていません。実行してトレースコードを配置する必要があります。あなたのコードを一度に「Console.log」することができます。ループのインデックスを記録します。時には、視覚的に物事を見て問題を見つけることが必要です。 – trevster344