最近mbostockがd3でデータを使用するベストプラクティスに関して私の質問に答えました。ここには投稿へのリンクがあります。d3.jsで多次元配列を反復する
https://github.com/d3/d3/issues/2828
しかし、私はまだ彼が提案した多次元データを反復処理する方法が混乱している彼のアドバイスに従うことをしようとしています。私はちょうど今のところログデータをコンソールに入れようとしていて、誰かが私がポストに続く実用的な例を作るのを助けてくれることを願っていました。関連するスニペットを下に見ることができます。
あなたは国の別の配列を持つことができますし、二重の値の配列を必要とします。これは、重複して日付を指定するのを避けるために使用されます。実際には、あなただけの組織、国や日付のn次元行列にそれを一般化できます。最も簡潔になり
{
"organizations": ["EA", "EB", "EC"],
"countries": ["Netherlands", "Belgium", "France"],
"dates": ["Jan_2016", "Feb_2016", "Mar_2016"],
"values": [
[
[11.7999, 15.0526, 13.2411],
[25.7713, 24.1374, null],
[27.6033, 23.6186, 20.2142]
],
[
[11.7999, 15.0526, 13.2411],
[25.7713, 24.1374, null],
[27.6033, 23.6186, 20.2142]
]
]
}
、私は期待していますが、覚えておく必要があるだろうデータにアクセスするディメンション順:私はこのすべての比較的新しいよしかしとして、この結果を達成する方法を理解しようとしてきた
var organization = "EA",
country = "Netherlands",
date = "Jan_2016",
value = data.values[organization][country][date]; // 11.7999
、それが困難でした。私が見つけた最も有用な資料は、video1 + video2であり、これを参考にしてみようとしています。
私はまだこれを実際に行う方が賢明ではなく、mbostockのデータ構造では不可能なのかどうか、私が何かを見つけていないのかどうかは分かりません。 (私は99.99%が後者であると確信しています)。
ここに私がやろうとしていることがあります。
d3.json("data.json", function(error, data) {
if (error) {
console.log(error)
} else {
console.log(data)
data = d3.entries(data);
console.log(data)
}
data.forEach(function(d) {
var org = Object.keys(data[0]);
console.log(org)
})
});
http://plnkr.co/edit/2O9Gn28WuMCE1ajOonzY?p=preview
だから、私が収集することができるものから、私はその後、配列にJSONを回すのforEachのシリーズは、一緒にすべてを結び付けるためにループを生成する必要があります。それは私が本当に苦労していることであり、どんな助けでも大いに感謝されます。私は
おかげ
お返事ありがとうございます!それは動作します:) - 私はそれが特定のデータを明らかにするために条件文を使用してさらにこれを拡大することが可能だと思いますか?つまり、$(this)== france &&月== jan_2016ならばvalue == ... – alexc101
確かに、条件付きを挿入できます。最初からどの要素を知っていれば、direcltyはリスト全体をループするのではなくindexOfを使うことができます(編集を参照) – tarulen
ああ、私は見る!まあ、それは私が必要なすべてだと思う、ありがとうございましたあなたは大規模な助けてきた! – alexc101