2012-06-28 151 views
2

我在JSON像兩個數組:如何在JavaScript中合併兩個嵌套數組的對象?

proj1     proj1 
    taska     taska 
    charge1     charge1 
    charge2    taskb 
    taskb      charge1 
    charge1     charge2 
proj2     proj2 
    taska     taska 
    taskb      charge1 
    charge1     taskb 
          charge1 
          taskc 
         proj3 
          taska 

,我想他們合併成類似:

proj1 
    taska 
    charge1 
    charge2 
    taskb 
    charge1 
    charge2 
proj2 
    taska 
    charge1 
    taskb 
    charge1 
    taskc 
proj3 
    taska 

我使用jQuery的extend方法遞歸合併嘗試過,但失敗因爲我需要數組來合併,而extend取而代之。我是否需要遍歷每個列表的每個級別,或者是否有像extend這樣的更優雅的解決方案,它合併對象數組?這裏

編輯是我的名單之一的JSON例子:

{ 
    "projects": [ 
     { 
      "projectName": "JobIdTooManyChar", 
      "tasks": [ 
       { 
        "name": "Process Graphics", 
        "charges": [ 
         { 
          "date": "2012-06-18", 
          "hours": 1 
         }, 
         { 
          "date": "2012-06-28", 
          "hours": "5" 
         } 
        ] 
       }, 
       { 
        "name": "Custom Software", 
        "charges": [ 
         { 
          "date": "2012-06-18", 
          "hours": 1 
         }, 
         { 
          "date": "2012-06-19", 
          "hours": 24 
         } 
        ] 
       }, 
       { 
        "name": "Consulting", 
        "charges": [ 
         { 
          "date": "2012-06-18", 
          "hours": 1 
         }, 
         { 
          "date": "2012-06-21", 
          "hours": 1 
         } 
        ] 
       } 
      ] 
     }, 
     { 
      "projectName": "JobIdTooManyChar", 
      "tasks": [ 
       { 
        "name": "CAD Drawings", 
        "charges": [ 
         { 
          "date": "2012-06-18", 
          "hours": 5 
         }, 
         { 
          "date": "2012-06-19", 
          "hours": 6 
         }, 
         { 
          "date": "2012-06-21", 
          "hours": 9 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 
+0

http://api.jquery.com/jQuery.merge/並在需要時遞歸。 – TheZ

+0

這是什麼樣的數組?你可以用JSON發佈它的結構嗎? –

+0

@SalmanA更新了一個詳細的JSON示例。 – xdumaine

回答

0

jQuery和underscore.js都可以看到數組作爲屬性值所以他們有一個從更換其他。

我真的相信你只需要編寫(展開他們已經完成的工作)的方法來按照你需要的方式來擴展對象。例如,對於一個數組,關鍵位置1是否有特殊含義,還是僅僅是一個堆棧/隊列?

您是否需要編寫這樣一個合併實用程序的幫助?

相關問題