1

私は最近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 })

最終的には必要なツリーが表示されますが、データを調べると、最上位 (「ルート」) の下に各データ オブジェクトが表示されます。

//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

そのため、values:Array[1]は role=admin を持つ子オブジェクトが格納されている場所ですが、children:Array[1]はどうですか? 明示的に子キーにロールを割り当てたので、実際には他のものと同じ意味です

今の質問は: これはクロムがこのようにデータ検査を表示するからですか? または実際にはデータオブジェクトに重複したものが保存されています(私の場合は値と子配列)? はいの場合、これが巨大なデータ ソース用であると煩わしい場合があります。

より良い方法もあるに違いないと確信しています。アドバイスをお願いします。

4

0 に答える 0