我有一個層次結構對象,我通過父母走過並對孩子進行排序來對孩子進行排序。這工作。但現在,我需要選擇打破層次並創建新的虛擬限制。使用Javascript中的層次結構組排列多維對象(Node.js)
爲了說明這一點,我們舉一個男人的例子,他有x Wifes。與每個妻子,他有和孩子。我可以根據每個妻子或每個人的妻子來分類孩子。
Man01 Wife01a Kid01aA
Kid01aB
Wife01b Kid01bC
Kid01bD
Man02 Wife02c Kid02cE
Kid02cF
Wife02d Kid02dG
Kid02dH
我們只是給他們的名字:
Murphy Winnie Kurt
Kara
Wendy Klaus
Klea
Marley Wonda Kasper
Kyra
Wilma Kevin
Karla
而且想想字母中父母對它們進行排序:
Marley Wilma Karla
Kevin
Wonda Kasper
Kyra
Murphy Wendy Klaus
Klea
Winnie Kara
Kurt
但是現在,我們希望能夠給孩子們那種屬於一個男人,或一般的妻子,或一般的孩子?
Marley Wilma Karla
Wonda Kasper
Wilma Kevin
Wonda Kyra
Murphy Winnie Kara
Wendy Klaus
Wendy Klea
Winnie Kurt
這是一個非常簡單的虛構物體。實際上,我沒有按字母順序排序,而是對許多屬性進行多列排序。
將結果輸出到表格可以,但處理本身已花費大量時間和內存。我不想讓這個更復雜。
如果這沒有問題,我只是將該對象平鋪爲一個數組中的表,將每個多列排序鏈接成一個超級多列排序,然後重新組合,從最接近的共同祖先開始,循環。
但我試圖以更有效的方式解決此問題,而無需將對象轉換爲完整的表數組。
- 我該如何配戴? 實際上循環了他們每個人兩次?
- 也許有一種'知名'的解決方案,這種排序,我只是不知道呢?
- 也許有巫術可用,使用所有'虛擬'父母的引用來創建類似於表的記錄,然後將這些引用歸入層次結構中,而不會循環使用它們?
這裏我指的是那種對象的一個例子: 通過Object
,我的意思是,毫不誇張地{}
,雖然對象包含數組對象{}
當它有多個成員的[]
。
{
"men" : [
{
"name" : "Murphy",
// a lot of properties
"wifes" : [
{
"name" : "Winnie",
// a lot of properties
"kids" : [
{
"name" : "Kurt",
// a lot of properties
}, {}, {} // etc...
]
}, {}, {} // etc...
]
}, {}, {} // etc...
]
}
請注意,在這種情況下,我的例子是錯誤的,因爲男人,妻子和孩子都是人類。但實際上有不同的對象具有不同的屬性。假設有多個宇宙,我應該選擇宇宙,星球,土壤或其他東西。;)
+1爲漂亮的名字。但是,您能否告訴我們更多關於您的數據結構的信息,例如一個JSON-ish示例對象?你真的需要做這種類型的客戶端與JS,爲什麼你不使用你最喜歡的
DMSDBS? – Bergi這是服務器端JavaScript使用節點。這是'DMS'。會有很多排序操作,這並不是說我可以在某個程序中執行一次操作,並完成它。 :) – Redsandro
什麼是你的數據結構,它是如何存儲的?你使用某種數據庫(這是我以前拼錯的「DBS」的意思)? – Bergi