Javascript 对象中数组的长度不为';不匹配

Javascript 对象中数组的长度不为';不匹配,javascript,jquery,json,d3.js,Javascript,Jquery,Json,D3.js,我试图使用D3中的树层次结构,但被卡住了。我认为我正确地构建了JSON,但当我在开发者工具中查看对象时,我看到了以下内容: {"attributes":{"id":0,"name":"root"},"dependents":[]} 请注意,第一行显示dependents数组的长度为0,但展开后,可以清楚地看到dependents有3个对象。当我将其字符串化时,我得到以下信息: {"attributes":{"id":0,"name":"root"},"dependents":[]}

我试图使用D3中的树层次结构,但被卡住了。我认为我正确地构建了JSON,但当我在开发者工具中查看对象时,我看到了以下内容:

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

请注意,第一行显示dependents数组的长度为0,但展开后,可以清楚地看到dependents有3个对象。当我将其字符串化时,我得到以下信息:

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

你知道会出什么问题吗?谢谢

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

树不是立即生成的,而是仅在需要时生成的,有时它基于最近的值

如果对象足够轻,如果您确实希望在记录时看到该值,则可以自己克隆该对象:

console.log(JSON.parse(JSON.stringify(myobject)));
如果您的对象很大或是递归的,您可能会发现克隆它有点困难。我个人有自己的工具


由于忽略浏览器的优化是有代价的,因此,如果您想确定它们的日志记录时间值,通常只需考虑这种行为并只记录原语…

我想当我调用
节点
函数时,它会在更改发生之前获取对象,就像Chrome没有获得最新的对象一样。我该怎么说呢?没什么不对的。它们表示对象在不同时间的视图。后者可能是后来的观点。此视图对代码没有影响……换句话说,您可能正在正确构建它。只是不要过于依赖开发人员工具中的表示。