2016-10-05 32 views
0

我的数组是像如何改变阵列结构在角2

Data=[ 
    {item:'A',depend:[ 
       {dependitem:'B',flag:2}, 
       {dependitem:'C',flag:3}, 
       {dependitem:'D',flag:2}, 
       {dependitem:'E',flag:3} 
        ],group:[2,6]}, 
    {item:'F',depend:[ 
       {dependitem:'G',flag:1}, 
       {dependitem:'H',flag:2}, 
       {dependitem:'I',flag:1}, 
       {dependitem:'J',flag:1} 
        ],group:[1,2]}, 
      ]; 

我想数据阵列改变

Group=[ 
    {group1:[ 
      {dependitem:'G'}, 
      {dependitem:'I'}, 
      {dependitem:'J'} 
      ]}, 
    {group2:[ 
      {dependitem:'B'}, 
      {dependitem:'D'}, 
      {dependitem:'H'} 
      ]}, 
    {group3:[ 
      {dependitem:'C'}, 
      {dependitem:'E'} 
      ]} 
    ]; 

第二阵列是组标记的第一阵列上的基础上即数据数组。 在此先感谢。

回答

3

PLUNKER

代码:

let groups = {}; 
this.data.forEach((d) => { 
    d.depend.forEach((r) => { 
    if(groups['group' + r.flag]) { 
     groups['group' + r.flag].push({dependitem: r.dependitem}); 
    } else { 
     groups['group' + r.flag] = [{dependitem: r.dependitem}]; 
    } 
    }) 
}); 

Object.keys(groups).forEach((k) => { 
    let o = {}; 
    o[k] = groups[k]; 
    this.group.push(o) 
}) 

输出:是这样行吗?

[ 
    { 
    "group2": [ 
     { 
     "dependitem": "B" 
     }, 
     { 
     "dependitem": "D" 
     }, 
     { 
     "dependitem": "H" 
     } 
    ] 
    }, 
    { 
    "group3": [ 
     { 
     "dependitem": "C" 
     }, 
     { 
     "dependitem": "E" 
     } 
    ] 
    }, 
    { 
    "group1": [ 
     { 
     "dependitem": "G" 
     }, 
     { 
     "dependitem": "I" 
     }, 
     { 
     "dependitem": "J" 
     } 
    ] 
    } 
] 
+0

你应该把解决方案的代码放在答案中,而不是链接到plunker。 – toskv

+1

我的不好。完成:) –

+1

哈哈,打我吧:D –