2016-12-02 45 views

回答

0

这是我的解决方案,使用新的ID及其边缘创建节点的副本。然后删除旧的节点。

changeId(current, newId) { 
    let g = this.getGraph(); 

    // Change on graph 
    let node = g.node(current); 
    let inEdges = g.inEdges(current); 
    let outEdges = g.outEdges(current); 

    // Create new node 
    node.id = newId; 
    g.setNode(newId, node); 
    // Create new edges 
    for (let i = 0; i < inEdges.length; i++) { 
     let edge = inEdges[i]; 
     let conn = g.edge(edge.v, current); 
     conn.target = newId; 
     g.setEdge(edge.v, newId, conn); 
    } 
    for (let i = 0; i < outEdges.length; i++) { 
     let edge = outEdges[i]; 
     let conn = g.edge(current, edge.w); 
     conn.source = newId; 
     g.setEdge(newId, edge.w, conn); 
    } 
    // Remove old node 
    g.removeNode(current); 
}