グラフィックアプリケーションにグループ/グループ化機能を実装する必要があります。目的は、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'クラスを作成します。ノード(グループだけでなく)は、デフォルトではfalseか、グループから削除された場合、またはグループ内のグループへの参照である 'in_group'プロパティを持つことができます。 – Connum