JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – D3:使用嵌套函数将父键的平面数据转换为层次结构大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我确信有一个非常简单的优雅方式来做到这一点,但我无法弄明白.我有一些看起来像这样的输入数据:
[
{id: 1,name: "Peter"},{id: 2,name: "Paul",manager: 1},{id: 3,name: "Mary",{id: 4,name: "John",manager: 2},{id: 5,name: "Jane",manager: 2}
]

如果可能,我想使用d3.js嵌套操作符来获取在层次结构布局中使用的结构.像这样:

[ 
   {name: "Peter",children: [
          {name:"Paul",children: [
              {name:"John"},{name:"Jane"}
          ]},{name:"Mary"}
      ]
   }
]

解决方法

此处不能使用嵌套运算符,因为嵌套会生成固定的层次结构:输出层次结构中的级别数与指定的键函数数相同.

也就是说,您可以编写自己的函数来生成树.假设根节点是输入数组中的第一个节点,您可以创建从id到node的映射,然后懒惰地构造树.

function tree(nodes) {
  var nodeById = {};

  // Index the nodes by id,in case they come out of order.
  nodes.forEach(function(d) {
    nodeById[d.id] = d;
  });

  // Lazily compute children.
  nodes.forEach(function(d) {
    if ("manager" in d) {
      var manager = nodeById[d.manager];
      if (manager.children) manager.children.push(d);
      else manager.children = [d];
    }
  });

  return nodes[0];
}

如果您知道节点按顺序列出,以便管理器出现在报表之前,则可以简化代码以仅迭代一次.

大佬总结

以上是大佬教程为你收集整理的javascript – D3:使用嵌套函数将父键的平面数据转换为层次结构全部内容,希望文章能够帮你解决javascript – D3:使用嵌套函数将父键的平面数据转换为层次结构所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: