2013-03-08 10 views
5

Ich versuche, die Baumhierarchie in D3 zu verwenden und stecken geblieben. Ich dachte, ich baue die JSON richtig, aber wenn ich auf dem Objekt in Entwickler Werkzeug sah, sehe ich folgende:Länge des Arrays in Objekt stimmt nicht

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

Beachten Sie die erste Zeile zeigt der unterhalt Array 0 Länge hat, aber wenn erweitert, Sie kann klar sehen, dass Abhängige 3 Objekte hat. Wenn ich es stringifiziere, bekomme ich folgendes:

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

Irgendeine Idee, was könnte falsch sein? Vielen Dank!

+0

Nichts ist falsch. Sie repräsentieren eine Sicht auf das Objekt zu verschiedenen Zeiten. Letzteres ist wahrscheinlich eine spätere Sichtweise. Diese Ansicht hat keinen Einfluss auf Ihren Code. –

+0

... mit anderen Worten, Sie bauen es wahrscheinlich richtig auf. Verlassen Sie sich nicht zu sehr auf Darstellungen in Entwicklertools. –

Antwort

6

Dieses Problem tritt normalerweise auf, wenn Sie das Objekt nach dem Anmelden ändern, da Chrome das Objekt bei der Protokollierung nicht tief kopiert, sondern lediglich einen Verweis speichert.

Der Baum wird nicht sofort erstellt, sondern nur bei Bedarf und manchmal basiert er auf einem neueren Wert.

Wenn Ihr Objekt leicht genug ist, können Sie es selbst klonen, wenn Sie wirklich den Wert bei Protokollierdauer sehen möchten:

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

Wenn Ihr Objekt groß oder rekursiv ist, können Sie finden es ein wenig mehr schwierig, es zu klonen. Persönlich habe ich mein eigenes Werkzeug, JSON.prune.log.

die Optimierung des Browsers ignoriert mit Kosten kommt, sollen Sie am häufigsten einfach berücksichtigen dieses Verhalten und melden Sie sich nur primitiv, wenn Sie ihren Protokollierungszeitwert sicher sein wollen, ...

+0

Ich nehme an, wenn ich die 'nodes' Funktion anrufe, erhält es das Objekt, bevor die Änderungen stattgefunden haben, genauso wie Chrome nicht das aktuellste Objekt bekommt. Wie adressiere ich das? – PLui

+0

habe ich mit meiner Lösung bearbeitet. –

Verwandte Themen