0
我需要在圖形應用程序中實現分組/取消分組功能。目標是與Adobe Illustrator或Microsoft PowerPoint中的組/取消組合功能類似。分組和取消分組形狀的最佳數據結構是什麼
組可以被嵌套(即:一組可以同時包含元素和其他組,其中又包含元素或組)
我想知道什麼是做的最好的數據結構。
它應該可以很快告訴:一個元素
- 是否是一組在
- 其包含它
我想到的是這樣的最大批的兄弟姐妹:
{
groups: {
g1: ['n1', 'n2', 'n3'],
g2: ['n4', 'n5', 'g1'],
g3: ['g2', 'n6', 'n7']
},
nodes {
n1: 'g1',
n2: 'g1',
n3: 'g1',
n4: 'g2',
n5: 'g2',
g1: 'n1',
g2: 'g3',
n6: 'g3',
n7: 'g3'
}
}
與group
含有組自己和nodes
作爲一個查詢表來判斷一個節點是否在一個組中。我可以告訴節點和組與他們的ID不同(節點總是數字)。通過組遞歸將提供兄弟姐妹列表。
這將封裝在一個對象中,然後該對象將處理組,取消組合和檢入JavaScript。
這是否理智?有沒有更好的辦法?
創建一個'node'類和一個'group'類,它將在內部將一系列nodesor組保存爲一個數組。節點(以及組)可以有一個'in_group'屬性,默認情況下爲false,或者從一個組中移除,或者對它所在的組引用。 – Connum