@@ -392,7 +392,7 @@ class GraphNode {
392392 const connectedEdgesMap = zrUtil . createHashMap < boolean , number > ( ) ;
393393 const connectedNodesMap = zrUtil . createHashMap < boolean , number > ( ) ;
394394
395- for ( let i = 0 ; i < this . edges . length ; i ++ ) {
395+ for ( let i = 0 , len = this . edges . length ; i < len ; i ++ ) {
396396 const adjacentEdge = this . edges [ i ] ;
397397 if ( adjacentEdge . dataIndex < 0 ) {
398398 continue ;
@@ -409,9 +409,14 @@ class GraphNode {
409409 nodeIteratorIndex ++ ;
410410 connectedNodesMap . set ( sourceNode . dataIndex , true ) ;
411411
412- for ( let j = 0 ; j < sourceNode . inEdges . length ; j ++ ) {
413- connectedEdgesMap . set ( sourceNode . inEdges [ j ] . dataIndex , true ) ;
414- sourceNodesQueue . push ( sourceNode . inEdges [ j ] . node1 ) ;
412+ const sourceNodeInEdges = sourceNode . inEdges ;
413+ for ( let j = 0 , len = sourceNodeInEdges . length , inEdge , inEdgeDataIndex ; j < len ; j ++ ) {
414+ inEdge = sourceNodeInEdges [ j ] ;
415+ inEdgeDataIndex = inEdge . dataIndex ;
416+ if ( inEdgeDataIndex >= 0 && ! connectedEdgesMap . hasKey ( inEdgeDataIndex ) ) {
417+ connectedEdgesMap . set ( inEdgeDataIndex , true ) ;
418+ sourceNodesQueue . push ( inEdge . node1 ) ;
419+ }
415420 }
416421 }
417422
@@ -420,9 +425,15 @@ class GraphNode {
420425 const targetNode = targetNodesQueue [ nodeIteratorIndex ] ;
421426 nodeIteratorIndex ++ ;
422427 connectedNodesMap . set ( targetNode . dataIndex , true ) ;
423- for ( let j = 0 ; j < targetNode . outEdges . length ; j ++ ) {
424- connectedEdgesMap . set ( targetNode . outEdges [ j ] . dataIndex , true ) ;
425- targetNodesQueue . push ( targetNode . outEdges [ j ] . node2 ) ;
428+
429+ const targetNodeOutEdges = targetNode . outEdges ;
430+ for ( let j = 0 , len = targetNodeOutEdges . length , outEdge , outEdgeDataIndex ; j < len ; j ++ ) {
431+ outEdge = targetNodeOutEdges [ j ] ;
432+ outEdgeDataIndex = outEdge . dataIndex ;
433+ if ( outEdgeDataIndex >= 0 && ! connectedEdgesMap . hasKey ( outEdgeDataIndex ) ) {
434+ connectedEdgesMap . set ( outEdgeDataIndex , true ) ;
435+ targetNodesQueue . push ( outEdge . node2 ) ;
436+ }
426437 }
427438 }
428439 }
@@ -491,9 +502,14 @@ class GraphEdge {
491502
492503 connectedNodesMap . set ( sourceNode . dataIndex , true ) ;
493504
494- for ( let j = 0 ; j < sourceNode . inEdges . length ; j ++ ) {
495- connectedEdgesMap . set ( sourceNode . inEdges [ j ] . dataIndex , true ) ;
496- sourceNodes . push ( sourceNode . inEdges [ j ] . node1 ) ;
505+ const sourceNodeInEdges = sourceNode . inEdges ;
506+ for ( let j = 0 , len = sourceNodeInEdges . length , inEdge , inEdgeDataIndex ; j < len ; j ++ ) {
507+ inEdge = sourceNode . inEdges [ j ] ;
508+ inEdgeDataIndex = inEdge . dataIndex ;
509+ if ( inEdgeDataIndex >= 0 && ! connectedEdgesMap . hasKey ( inEdgeDataIndex ) ) {
510+ connectedEdgesMap . set ( inEdgeDataIndex , true ) ;
511+ sourceNodes . push ( inEdge . node1 ) ;
512+ }
497513 }
498514 }
499515
@@ -504,9 +520,14 @@ class GraphEdge {
504520
505521 connectedNodesMap . set ( targetNode . dataIndex , true ) ;
506522
507- for ( let j = 0 ; j < targetNode . outEdges . length ; j ++ ) {
508- connectedEdgesMap . set ( targetNode . outEdges [ j ] . dataIndex , true ) ;
509- targetNodes . push ( targetNode . outEdges [ j ] . node2 ) ;
523+ const targetNodeOutEdges = targetNode . outEdges ;
524+ for ( let j = 0 , len = targetNodeOutEdges . length , outEdge , outEdgeDataIndex ; j < len ; j ++ ) {
525+ outEdge = targetNode . outEdges [ j ] ;
526+ outEdgeDataIndex = outEdge . dataIndex ;
527+ if ( outEdgeDataIndex >= 0 && ! connectedEdgesMap . hasKey ( outEdgeDataIndex ) ) {
528+ connectedEdgesMap . set ( outEdgeDataIndex , true ) ;
529+ targetNodes . push ( outEdge . node2 ) ;
530+ }
510531 }
511532 }
512533
@@ -585,4 +606,4 @@ zrUtil.mixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData'));
585606
586607export default Graph ;
587608
588- export { GraphNode , GraphEdge } ;
609+ export { GraphNode , GraphEdge } ;
0 commit comments