我具有表示在此格式的樹中的二維數組:如何在JavaScript中將2D數組轉換爲樹(對象)?
[["Food", 0], ["Dairy", 1], ["Milk", 2], ["Low-fat", 3], ["Butter", 2], ["Cheese", 2], ["Vegetables", 1], ["Spinach", 2], ["Meat", 1], ["Fish", 2], ["Salmon", 3], ["Poultry", 2]]
每個項目(節點)是一個陣列,其中它的第一個元素是名稱,第二個是的水平(深度)節點。
我需要將此二維數組轉換爲嵌套的JavaScript對象,其中每個節點對象由名稱(字符串)和子對象(數組)組成。結果應該是根對象(這裏是「食物」),其他所有項目都是其子項。輸入數組總是會有序的,所以可以假定第一個元素是root。
有關迭代或遞歸的最好方法是什麼?
你怎麼知道在哪個對象下放置節點?沒有辦法知道「牛奶」和「黃油」是否與你擁有的結構一起處於「乳製品」之下。 –
@ Xeon06:每個節點都在最後一個遇到較低深度的節點下,所以'Milk','Butter'和'Cheese'都在'Dairy'下; 「菠菜」是「蔬菜」的獨生子;等等。 –
「牛奶」,「黃油」和「奶酪」都是二級。最後一級是「乳製品」,因此是他們的父母。 「魚」也是2級,但是在更接近1級的「肉」之後。因此,一般來說,較高級別的節點是所有較低級別節點的父級節點。具有相同級別編號的下一個節點是其兄弟。 – EmilyT