问个 js 的问题,当删除一个点时,如何查找到所有与之相关联的节点与连接信息并删除

2017-05-26 10:18:11 +08:00
 WenJimmy
var nodes = [
    {id: 1001, label: "A"},
    {id: 1002, label: "B"},
    {id: 1003, label: "C"},
    {id: 1004, label: "D"},
    {id: 1005, label: "E"},
    {id: 1006, label: "F"},
    {id: 1007, label: "G"},
    {id: 1008, label: "H"},
    {id: 1009, label: "I"}
];
var edges = [
    {from:1002,to:1001,id:"10021001"},//B>A
    {from:1003,to:1002,id:"10031002"},//C>B
    {from:1004,to:1003,id:"10021001"},//D>C
    {from:1005,to:1003,id:"10021001"},//E>C
    {from:1006,to:1002,id:"10021001"},//F>B
    {from:1007,to:1004,id:"10021001"},//G>D
    {from:1008,to:1007,id:"10021001"},//H>G
    {from:1009,to:1007,id:"10021001"} //I>G
]
graph LR
B-->A
C-->B
F-->B
D-->C
E-->C
G-->D
H-->G
I-->G

当删除 D 时,G、H、I 及连接线都要清除,数据是这样的

var nodes = [
    {id: 1001, label: "A"},
    {id: 1002, label: "B"},
    {id: 1003, label: "C"},
    {id: 1005, label: "E"},
    {id: 1006, label: "F"}
];
var edges = [
    {from:1002,to:1001,id:"10021001"},//B>A
    {from:1003,to:1002,id:"10031002"},//C>B
    {from:1005,to:1003,id:"10021001"},//E>C
    {from:1006,to:1002,id:"10021001"}//F>B
]
graph LR
B-->A
C-->B
F-->B
E-->C

1023 次点击
所在节点    问与答
6 条回复
XiaoxiaoPu
2017-05-26 10:30:13 +08:00
遍历图,找出 D 的前驱和后继,删除包含 D 的边,新建从 D 的前驱到 D 的后继的边
yalanaika
2017-05-26 10:30:18 +08:00
写个递归
WenJimmy
2017-05-26 10:30:49 +08:00
id 忘记改了,是 from 到 to 的 id 拼接
Exin
2017-05-26 10:31:18 +08:00
将 edge 数据整合到 nodes 中,令每个 node 中包含连接到它的点的数据(不能修改 nodes 数组的话另起一个哈希表 /Map 也是可以的)

删除的时候递归一下就行了
WenJimmy
2017-05-26 11:23:45 +08:00
@XiaoxiaoPu #1 太高深了,看不懂
WenJimmy
2017-05-26 11:24:55 +08:00
@Exin #4 一楼的看不懂,不是理科生,用你的思路,已经解决了,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/363920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX