2013-03-08 80 views
5

我試圖在D3中使用樹層次結構並卡住了。我想我正確地構建JSON,但是當我看着在開發者工具的對象,我看到以下內容:對象中的數組長度不匹配

chrome http://s10.postimage.org/yo3yshmax/chrome.png

公告第一行顯示的家屬數組長度爲0,但在擴張時,你可以清楚地看到依賴者有3個對象。當我把它串起來,我得到以下內容:

{"attributes":{"id":0,"name":"root"},"dependents":[]} 

任何想法可能是什麼錯?謝謝!

+0

沒有什麼不妥。它們代表了對象在不同時間的視圖。後者可能是後來的觀點。該視圖對您的代碼沒有影響。 – 2013-03-08 15:37:24

+0

......換句話說,你可能正在構建它。只是不要過分依賴開發人員工具中的表示。 – 2013-03-08 15:38:34

回答

6

當您在記錄對象後更改對象時,通常會發生此問題,因爲Chrome在記錄日誌時並未深度複製對象,而只是存儲引用。

該樹不是立即生成的,但僅在需要時才生成,有時它基於更新的值。

如果你的目標是光照充足,你可以自己複製它,如果你真的想看到記錄時間的價值:

console.log(JSON.parse(JSON.stringify(myobject))); 

如果你的對象是大是遞歸的,你可能會覺得有點多很難克隆它。我個人有我自己的工具,JSON.prune.log

由於忽略瀏覽器的優化是有代價,你應該經常簡單地考慮到這種行爲,如果你想確保他們的登記時間價值只記錄原始...

+0

我想,當我調用'nodes'函數時,它會在更改發生之前獲取對象,就像Chrome未獲取最新對象一樣。我如何解決這個問題? – PLui 2013-03-08 15:35:21

+0

我用我的解決方案編輯。 – 2013-03-08 15:37:13