经过操作产生以下数组
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 循环只找打第一个就停止了,再加上还有内部嵌套,又加了个递归,一试就变成了死循环。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.