经过操作产生以下数组
var arr = [
{"pid":"12dassdf",
"source":{"id":"sd1a3","component":"ordinary"},
"target":{"id":"sdbf3","component":"ordinary"}
},
{"pid":"ccdassdf",
"source":{"id":"sd123","component":"start"},
"target":{"id":"sd1a3","component":"ordinary"}
},
{"pid":"1gdassdf",
"source":{"id":"er12a","component":"ordinary"},
"target":{"id":"sdop3","component":"end"}
},
{"pid":"62dayhdf",
"source":{"id":"sdbf3","component":"ordinary"},
"target":{"id":"sd3bn","component":"ordinary"}
},
{"pid":"7udassdf",
"source":{"id":"sd3bn","component":"block"},
"target":{"id":"er12a","component":"ordinary","arclist":{"nodes":[{"pid":"结构同上"},...]}}
},
]
求最后生成一个,start 开头的对象顺序数组:
var newarr = [{"id":"sd123","component":"start"},
{"id":"sd1a3","component":"ordinary"},
...,{"id":"sdop3","component":"end"}]
本来以为很简单的,找到 start 那组,拿到 target,然后根据 target 的 id,去循环匹配 source 的 id,push 到空数组。
可是实际编码中,普通 for 循环只找打第一个就停止了,再加上还有内部嵌套,又加了个递归,一试就变成了死循环。
1
jasperjia 2018-05-23 16:25:51 +08:00
在用 G6 做网图吗,手动滑稽
|
2
jasperjia 2018-05-23 16:28:34 +08:00
我的做法,参照你的话就是,先循环取出所有 id,再根据前序-后续关系对所有 id 进行排序
|
4
leega0 OP 此问题终结,用了冒泡排序解决。
|
5
changnet 2018-05-23 19:00:10 +08:00 via Android
循环一次,把它们都扔到 kv 结构,同时找出 start。再循环一次,把它们放到数组。
如果你的 id 都是增长的,不就一简单排序么 |