Object中的数组长度不匹配

PLu*_*Lui 5 javascript jquery json d3.js

我正在尝试使用D3中的树层次结构并卡住了.我以为我正在构建JSON,但当我在Developer's Tool中查看对象时,我看到以下内容:

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

注意第一行显示dependents数组有0长度,但扩展后,你可以清楚地看到dependents有3个对象.当我对其进行字符串化时,我得到以下内容:

{"attributes":{"id":0,"name":"root"},"dependents":[]} 
Run Code Online (Sandbox Code Playgroud)

知道什么可能是错的吗?谢谢!

Den*_*ret 6

在记录对象后更改对象时通常会发生此问题,因为Chrome在您记录对象时不会对对象进行深层复制,而只是存储引用.

树不是立即构建的,而是仅在需要时构建,有时它基于更新的值.

如果您的对象足够轻,如果您真的想在记录时看到该值,则可以自己克隆它:

console.log(JSON.parse(JSON.stringify(myobject)));
Run Code Online (Sandbox Code Playgroud)

如果您的对象很大或递归,您可能会发现克隆它有点困难.就个人而言,我有自己的工具,JSON.prune.log.

由于忽略浏览器的优化带来成本,您通常应该只考虑这种行为并且只记录原语,如果您想确定它们的记录时间值...