Commit 0c3502c8 by 吴斌

update:路径寻找

parent 112d3fb3
......@@ -16,6 +16,7 @@ export function getMapData(myDiagram:any) {
})
linkDataArray.forEach((item:any)=>{
let node = null;
// 只记录双向连接
if (item.from && item.to){
node = nodeMap[item.from]
node.next.push(item.to)
......@@ -57,12 +58,12 @@ export function findNodesAllWayBetween(startKey:number, endKey:number, myDiagram
while(!flag){
// 保存当前路径的节点数量
let beforePathsNode = 0;
let beforePathsNodeCount = 0;
// 保存扩展后路径的节点数量
let afterPathsNode = 0;
let afterPathsNodeCount = 0;
// 计算扩展前的总路径节点数量
for (let path of paths){
beforePathsNode += path.length
beforePathsNodeCount += path.length
}
for (let path of paths){
// 获取当前路径的最后一个节点
......@@ -85,7 +86,7 @@ export function findNodesAllWayBetween(startKey:number, endKey:number, myDiagram
else{
for (let nextNodeKey of nextNode){
// 如果下一个节点已经在路径中,则跳过,无需扩展,避免循环
if (nextNodeKey in path){
if (path.indexOf(nextNodeKey) !== -1){
continue
}
let newPath = path.slice(0)
......@@ -99,10 +100,10 @@ export function findNodesAllWayBetween(startKey:number, endKey:number, myDiagram
}
// 计算扩展后的总路径节点数量
for (let path of paths){
afterPathsNode += path.length
afterPathsNodeCount += path.length
}
// 如果paths内元素数量没有增加,则搜索完成
if (beforePathsNode == afterPathsNode){
if (beforePathsNodeCount == afterPathsNodeCount){
flag = true
// 删除没有找到终点的路径
paths = paths.filter((item:any) => item[item.length-1] == endKey)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment