2013-08-17 33 views
1

我的代碼是here上bl.ocks.org:爲什麼d3包裝版面意外崩潰?

enter image description here

改變的選擇標籤的值來限制圈數。如果你沒有使用它,它似乎可以工作,但是每次都會出現特定的情況(例如,爲TE選擇10,然後選擇247)。如果你檢查控制檯,你會發現有問題的線路是nodes = pack.nodes(data);。我看到兩種可能性:這是d3包裝版本的錯誤,或者我的數據越來越混亂。你能否說出這兩種情況是否屬於這種情況?如果是這樣,那麼特定的問題是什麼?

回答

1

您的代碼中存在導致子節點重複的錯誤。由於兒童重複,包裝佈局中存在無限循環。

我通過在調試器中設置斷點,然後暫停代碼讓它稍微卡住後發現了這一點。果然,它被卡在for循環中,節點的節點本身是_pack_next,導致無限循環。很容易看到孩子們的重複;例如,e.filter(function(d) { return d.name === "Jermichael Finley"; })返回了兩個節點,而不是一個。

+0

謝謝你。我現在發現了這個錯誤。我爲每個位置存儲了一個陣列玩家的副本,以便您可以添加玩家,但是在我的數據調用'''pack.nodes'''前,我正在製作副本,這使得它們按順序排列他們最初是按照一些隨機排名進行排序的,這些排名非常類似於預測的點數,但是由ESPN的分析師對其他因素稍作調整。只有當排名與預測不同時,球員纔會在加回時得到重複,所以只是偶爾發生 – user2592854