如果使用nest(),d3js数据对象在其子节点和值属性中有重复数据?

时间:2013-11-07 23:17:09

标签: javascript d3.js

这些天我和d3js一起玩,试图在这里有意义:

最初,我有一个实际上有这个内容的json数据文件:

[{name:one, role:admin, accessLevel:0},{name:two, role:user,accessLevel:1},{name:three,role:guest,accessLevel:2}]

因此,为了使这些数据有效,我用根包装了原始数据。同样在我的设计中,我希望数据先用'accessLevel'排序,然后用'role'

排序
var treeData = {}
d3.json(url,function(source){


var sortedTree = d3.nest()
        .key(function(d) { return d.accessLevel })
        .key(function(d) { return d.role})
        .entries(source)
treeData['root'] = sortedTree
})

// I now have a json data source like:
// {root : [{...},{...},{...}]
// and it was sorted off step 2

我正在计划树形树形图,我明确定义了数据的子代:

 var tree = d3.layout.tree()
        .children(function(d) { return d.root?d.root : d.values })

最终我可以看到我想要的树,但是当我检查数据时,我可以看到顶层下的每个数据对象('root')

//from chrome developer console, just take 1 data object as example

Object {root: Array[3], x0: 1730}
root: Array[3]
    0: Object
    children: Array[1]
    depth: 1
    key: "1"
    parent: Object
    values: Array[1]
    x: 187.48768472906406
    x0: 187.48768472906406
    y: 261.3333333333333
    y0: 261.3333333333333
    __proto__: Object
    ...

我理解结构就像

root -> accessLevel = 0 -> role=admin

这样值:Array [1] 是存储role = admin的子对象的位置,但 children:Array [1] 怎么样?它实际上意味着与另一个相同,因为我明确指定了儿童键是角色

现在的问题是:这是因为chrome以这种方式显示数据检查?或者实际上数据对象存储了重复的东西(在我的情况下是值和子数组)?如果是的话,如果这是一个庞大的数据源,那可能会很烦人。

我非常肯定必须有更好的方法,请告诉我,谢谢大家!

0 个答案:

没有答案