使用d3.js v4-使用parentId解决歧义

使用d3.js v4-使用parentId解决歧义,d3.js,D3.js,我试图理解正确的用法,以实现我的可折叠树d3,但无法建立正确的父/子引用,因为我不能使用“父”。正在尝试使用parentID 这是我正在测试的数据集: var result = [ { "id": 1, "name": "Top Level", "parent": null, "parentId": "" }, { "id": 2, "name": "PROD", "parent": "Top Level", "parentId": 1 }, { "i

我试图理解正确的用法,以实现我的可折叠树d3,但无法建立正确的父/子引用,因为我不能使用“父”。正在尝试使用parentID

这是我正在测试的数据集:

    var result = [
      { "id": 1, "name": "Top Level", "parent": null, "parentId": "" },
      { "id": 2, "name": "PROD", "parent": "Top Level", "parentId": 1 },
      { "id": 3, "name": "QAT", "parent": "Top Level", "parentId": 1 },
      { "id": 4, "name": "App1", "parent": "PROD", "parentId": 2 },
      { "id": 5, "name": "App1", "parent": "QAT", "parentId": 3 },
      { "id": 6, "name": "ServerPROD001", "parent": "App1", "parentId": 4 },
      { "id": 7, "name": "ServerQAT001", "parent": "App1", "parentId": 5 }
    ];
并基于可折叠树:

        // convert the flat data into a hierarchy 
        var treeData = d3.stratify()
          .id(function (d) { return d.name; })
          .parentId(function (d) { return d.parent })
          (result);
如果我不包括第6项和第7项,这就可以了。如果我包含了这些,我会得到一个模糊错误,这是有意义的,因为它无法确定要关联到哪个“App1”

我尝试更改代码以使用parentId,但现在出现了一个错误“missing:1”


注意-我无法将“App1”名称值更改为唯一的值,因为它们将存在于具有该给定名称的多个区域中

由于您的id是唯一的,而不是名称:

// convert the flat data into a hierarchy 
var treeData = d3.stratify()
          .id(function (d) { return d.id; }) // return the id instead of the name
          .parentId(function (d) { return d.parentId })
          (result);
然后设置需要显示的名称,如下所示:

// assign the name to each node as the initial name
treeData.each(function(d) {
    d.name = d.data.name;
  });
可以根据以下内容找到一个工作示例: :)


祝你好运

.id(函数(d){return d.id;}).parentId(函数(d){return d.parentId})
?mkaran-让我试试,我发现我可能没有返回运行正常的d.id,但它在树中显示了d.id,所以我看到了“1”、“2”等。。。我需要显示“name”。手动分配name
treeData.each(函数(d){d.name=d.data.name;})像这样:(基本上取自)我看到我错过了什么。非常感谢mkaran!让我一天都很愉快
// assign the name to each node as the initial name
treeData.each(function(d) {
    d.name = d.data.name;
  });