2014-11-05 43 views
0

我正在使用jqtree插件來生成樹視圖。 現在我想通過標籤爲每個節點排序樹。Jqtree - 排序entrys

該插件沒有排序功能,所以我認爲我需要在將數據加載到它之前進行排序。

這是我的數據進行排序。

[ 
{ 
    "label": "A label", 
    "id": "201", 
    "children": [ 
     { 
      "label": "C Label", 
      "id": "40773", 
      "children": [ 
       { 
        "label": "F label", 
        "id": "222460", 
        "children": [] 
       }, 
       { 
        "label": "C label", 
        "id": "222469", 
        "children": [] 
       }, 
       { 
        "label": "X label", 
        "id": "27512", 
        "children": [ 
         { 
          "label": "F label", 
          "id": "143546", 
          "children": [] 
         }, 

         { 
          "label": "D label", 
          "id": "141341", 
          "children": [ 
           { 
            "label": "G label", 
            "id": "222456", 
            "children": [] 
           }, 
           { 
            "label": "L label", 
            "id": "222457", 
            "children": [] 
           }, 
           { 
            "label": "x label", 
            "id": "222443", 
            "children": [ 
             { 
              "label": "Z label", 
              "id": "222447", 
              "children": [] 
             }, 
             { 
              "label": "A label", 
              "id": "222446", 
              "children": [] 
             } 
            ] 
           }, 
           { 
            "label": "L label", 
            "id": "222455", 
            "children": [] 
           } 
          ] 
         }, 
         { 
          "label": "A label", 
          "id": "143547", 
          "children": [ 
           { 
            "label": "B label", 
            "id": "222458", 
            "children": [] 
           } 
          ] 
         }, 
         { 
          "label": "R label", 
          "id": "143548", 
          "children": [] 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

]

非常感謝您的任何建議。

回答

1

您可以使用迭代遍歷樹和任何排序算法的遞歸函數對它們進行排序。

recursiveSortByLabel(arr); //arr = the array with your tree data 
function recursiveSortByLabel(obj){ 
    if(obj.length > 0){ 
     for(var i in obj){ 
      if(obj[i].children.length > 0) 
       recursiveSortByLabel(obj[i].children); 
      sortAlgorithm(obj); //any sorting algorithm 
     } 
    } 
} 

在這種fiddle我做到了與寧效率不高,但很容易實現冒泡排序算法。它將結果記錄到控制檯進行檢查。

+0

謝謝 - 這是我需要的 – 2014-11-07 08:06:39