2014-04-22 372 views
0

我有一个多维数组,并试图根据数组属性的值对它们进行分组。按特定值分组多维数组

我试图按ID将它们分组,但事实上我实际上并不知道该ID。因此,它不喜欢我可以把它放在一个循环,并说虽然我< 7,因为我不知道,7是id值的最大值,

Array (
[0] => Array (
     [name] => R8900 
     [type] => public 
     [id] => 1 
    ) 
[1] => Array (
     [name] => R8944 
     [type] => public 
     [id] => 1 
    ) 
[2] => Array (
     [name] => R8922 
     [type] => private 
     [id] => 3 
    ) 
[3] => Array (
     [name] => R8816 
     [type] => private 
     [id] => 3 
    ) 
[4] => Array (
     [name] => R7434 
     [type] => VIP 
     [id] => 7 
    ) 
) 

什么我希望制作:

Array (

[1] => Array (
     [0] => Array (
       [name] => R8900 
       [type] => public 
       ) 
     [1] => Array (
       [name] => R8944 
       [type] => public 
       ) 
    ) 

[3] => Array (
     [2] => Array (
      [name] => R8922 
      [type] => private 
      ) 

     [3] => Array (
      [name] => R8816 
      [type] => private 
      ) 
    ) 

[7] => Array (
     [4] => Array (
      [name] => R7434 
      [type] => VIP 
      ) 
    ) 
) 

回答

1

东西一样简单:

var result:Object = {}; 

for each(var i:Object in input) 
{ 
    if(!result.hasOwnProperty(i.id)) 
    { 
     result[i.id] = []; 
    } 

    result[i.id].push(i); 
    delete i.id; 
} 
+0

嗨@Marty感谢乌拉圭回合的答复。 – xyonme

+0

如何追踪“结果”属性? – xyonme

+0

@xyonme由于'result'及其内容是对象,因此您需要遍历内容以进行调试。或者,您可以使用自己的'toString()'定义为结果和内部对象创建自定义数据类型。 – Marty