2014-10-08 87 views
0

我想創建一個陣列結構與子實體這樣的 - >變化陣列格式

$scope.groups = [ 
    { 
     "categories": [ 
      { 
       "name": "PR", 
       "sortOrder": 0, 
       "type": "category" 
      } 

     ], 
     "name": "DEPT 1", 
     "sortOrder": 0, 
     "type": "group", 
     "id": "-JY_1unVDQ5XKTK87DjN", 
     "editing": false 
    } 
]; 

從數組這麼想的有孩子的實體,但所有項目都在一個對象列出像這個 - >

$scope.groups = [ 
    { 
     "name": "PR", 
     "sortOrder": 0, 
     "type": "category" 
    }, 

    { 
     "name": "AD", 
     "sortOrder": 3, 
     "type": "category" 
    }, 
    { 
     "name": "DEPT 2", 
     "sortOrder": 1, 
     "type": "group", 
     "id": "-JYZomQKCVseJmaZoIF9", 
     "editing": false, 
     "categories": [] 
    }, 
]; 

有什麼可能的辦法嗎?

+0

「類別」是否以某種方式與「部門」相關聯。或者你是否想將數組中的'categories'聚集在一個數組中,並將其他對象保持原樣並最終將它們封裝在一個JavaScript對象中? – 2014-10-08 09:09:18

+0

類別是部門的孩子,我想把他們分成一個對象 – forgottofly 2014-10-08 11:23:27

回答

0

As @ Eagle1正確地指出了。您需要正確定義數據模型以定義一個可以爲您分組的函數。這就是說,根據我的理解,您有一個$scope.groups特定部門的對象數組,其中包含您需要合併爲子元素的一些categories

你可以通過定義一個返回一個對象像你這樣的功能開始提及:

var organize = function(arr){ 
    cats = []; 
    dep = {}; 
    $.each(arr, function(i, val) { 
    if(val.type == "category") 
    cats.push(val); 
    else 
    dep = val; 
    }); 

dep.categories = cats; 
return dep; 
} 

最終,你必須遍歷數組並查找category類型的對象和數組把它們扔掉,並將該數組作爲您打算返回的對象的categories鍵。我希望它能讓你開始朝正確的方向發展。

+0

[meta] Thanks @Vivek – forgottofly 2014-10-08 11:24:59

0

當然是。 在javascipt中是可行的,儘管可以幫助你設計出一些我們需要類別之間關係的東西。

但是,這聽起來像應該在您的數據模型(部門類別,經典的反身關係父 - 子)之間的關係。應該從後端接收一個已經排序的數組。

+0

我得到一個無序數組,其中包含沒有子實體的對象。子實體與對象一起列出,區別在於子實體具有父對象的標識 – forgottofly 2014-10-08 11:26:57