2014-10-08 86 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