经过操作产生以下数组
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 循环只找打第一个就停止了,再加上还有内部嵌套,又加了个递归,一试就变成了死循环。