Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON到树JS_Javascript_Json_Tree - Fatal编程技术网

Javascript JSON到树JS

Javascript JSON到树JS,javascript,json,tree,Javascript,Json,Tree,有人能帮我更改这个json吗: 规则如下: JSON(A)的节点没有按特定顺序排序 JSON(A)的节点是可变的 没有附加子节点时,“从属”节点不得存在(请参见markcorderoi或richard) 状态表示雇佣状态,1=工作,2=结束。连接到终端(2)节点的所有工作节点应使用相邻(上行链路)工作(1)节点(即连接到nssi的marcoderoi,在最终树中删除rudy) JSON(B)不应包含结束节点 JSON A: [ { "manager_name": "nssi",

有人能帮我更改这个json吗:

规则如下: JSON(A)的节点没有按特定顺序排序 JSON(A)的节点是可变的 没有附加子节点时,“从属”节点不得存在(请参见markcorderoi或richard) 状态表示雇佣状态,1=工作,2=结束。连接到终端(2)节点的所有工作节点应使用相邻(上行链路)工作(1)节点(即连接到nssi的marcoderoi,在最终树中删除rudy) JSON(B)不应包含结束节点

JSON A:

[
  {
    "manager_name": "nssi",
    "login_name": "nishanthi",
    "status": 2
  }, 
  {
      "manager_name": "mbarcelona",
      "login_name": "nssi",
      "status": 1
  }, 
  {
      "manager_name": "nishanthi",
      "login_name": "markcorderoi",
      "status": 1
  }, 
  {
      "manager_name": "mbarcelona",
      "login_name": "richard",
      "status": 1
  }, 
  {
      "manager_name": "letecia",
      "login_name": "kamran",
      "status": 1
  }, 
  {
      "manager_name": "letecia",
      "login_name": "rudy",
      "status": 2
  }, 
  {
      "manager_name": "rudy",
      "login_name": "sol",
      "status": 2
  }, 
  {
    "manager_name": "gloria",
    "login_name": "maria",
    "status": 1
  }, 
  {
    "manager_name": "markcorderoi",
    "login_name": "gloria",
    "status": 1
  }
]
这个

JSON B:

[  
   {  
      "subordinate":[  
         {  
            "subordinate":[  
               {  
                  "subordinate":[  
                     {  
                        "subordinate":[  
                           {  
                              "name":"maria"
                           }
                        ],
                        "name":"gloria"
                     }
                  ],
                  "name":"markcorderoi"
               }
            ],
            "name":"nssi"
         },
         {  
            "name":"richard"
         }
      ],
      "name":"mbarcelona"
   },
   {  
      "subordinate":[  
         {  
            "name":"kamran"
         },
         {  
            "name":"sol"
         }
      ],
      "name":"letecia"
   }
]

我真的很难只用Javascript来做一些算法。

这有点棘手,因为您的数据不包含没有父节点的项,所以会收集所有子节点和所有父节点。只有父级才是结果集没有子级的使用

结束
中,收集所有
状态===2
节点,如果这些节点作为父节点工作,则随后将其删除

函数getTree(数据){
var o={},
儿童={},
父母={},
结束=[];
data.forEach(函数(a){
var temp={name:a.login_name};
children[a.login_name]=true;
父母[a.manager\u name]=true;
如果(a.status==2){
结束。推(a);
}
if(o[a.login\u name]&&o[a.login\u name].下属){
temp.substance=o[a.login\u name]。substance;
}
o[a.login_name]=临时;
o[a.manager_name]=o[a.manager_name]|{name:a.manager_name};
o[a.manager_name].下属=o[a.manager_name].下属| |[];
o[a.manager\u name].下属.push(临时);
});
结束。forEach(函数(a){
var指数=-1;
if(o[a.login\u name].下属){
o[a.manager\u name].下属.some(函数(b,i){
如果(b==o[a.login\u name]){
指数=i;
返回true;
}
});
如果(索引!=-1){
o[a.manager\u name].substance.splice(索引,1);
o[a.manager\u name].subscribe=o[a.manager\u name].subscribe.concat(o[a.login\u name].subscribe);
}
}
});
Object.keys(子项).forEach(函数(k){
删除父母[k];
});
返回对象.keys(父项).map(函数(k){
返回o[k];
});
}
var数据=[{管理者姓名:“nssi”,登录名:“nishanthi”,状态:2},{管理者姓名:“mbarcelona”,登录名:“nssi”,状态:1},{管理者姓名:“nishanthi”,登录名:“markcorderoi”,状态:1},{管理者姓名:“mbarcelona”,登录名:“richard”,状态:1},{管理者姓名:“letecia”,登录名:“kamran”,状态:1},{经理姓名:“letecia”,登录名:“rudy”,状态:2},{经理姓名:“rudy”,登录名:“sol”,状态:2},{经理姓名:“gloria”,登录名:“maria”,状态:1},{经理姓名:“markcorderoi”,登录名:“gloria”,状态:1}];
console.log(getTree(data));

。作为控制台包装器{max height:100%!important;top:0;}
可能的重复!可能的重复是的,我尝试了那个链接,但仍然无法更正。请帮助。我尝试了这么多方法,然后我被这个成功所绊倒:函数(数据){var node={};var map={};var root=[];for(var i=0;i