function convertDataToNode(data) { let nodes = []; let edges = [];

const traverse = (node) => { if (node.handleNode) { const handleNodeId = node.handleNode.nodeId; nodes.push({ nodeId: handleNodeId });

  if (node.serialNode) {
    node.serialNode.forEach((sNode) => {
      const sNodeId = sNode.handleNode.nodeId;
      nodes.push({ nodeId: sNodeId });
      edges.push({ source: handleNodeId, target: sNodeId });
    });
  }
} else if (node.parallelNode) {
  if (node.parallelNode.serialNode) {
    const pNodes = node.parallelNode.serialNode.map((sNode) => {
      const sNodeId = sNode.handleNode.nodeId;
      nodes.push({ nodeId: sNodeId });
      edges.push({ source: node.parallelNode, target: sNodeId });
      return sNodeId;
    });
    edges.push({ source: node.parallelNode, target: pNodes });
  }
}

};

data.parallelNode.forEach((node) => traverse(node));

return { nodes, edges }; }

// Example usage: const node = convertDataToNode(data); console.log(node); // { nodes: [ { nodeId: 'A' }, { nodeId: 'B' }, { nodeId: 'C' } ], edges: [ { source: '0', target: 'A' }, { source: '0', target: 'B' }, { source: 'A', target: 'C' }, { source: 'B', target: 'C' } ] }

let-data-=-n--parallelNode-n----n------serialNode-n--------n----------handleNode-n------------nodeId-An----------n--------n------n----n----n------serialNode-n--------n----------handleNode-n------------nodeId-Bn----------n--------n------n----n----n---

原文地址: https://www.cveoy.top/t/topic/rsX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录