Object中的数组长度不匹配

时间:2013-03-08 15:29:18

标签: 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":[]} 

知道可能出现什么问题吗?谢谢!

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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

由于忽略了浏览器的优化会产生成本,因此您通常应该只考虑这种行为,并且如果您想确定其记录时间值,则只记录原语...

相关问题