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---
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' } ] }
原文地址: https://www.cveoy.top/t/topic/rsX 著作权归作者所有。请勿转载和采集!