2010-09-02 74 views
3

我有对象的阵列,其是这样的:转换对象的阵列,以数组的数组

SomeObject (Array) 
    [0] (object) 
     id = 1 
     name = 'one' 
    [1] (object) 
     id = 2 
     name = 'two' 

我需要它是数组的数组,是这样的:

someobject (array) 
    [0](array) 
    id = 1 
    name = 'one' 
    [1](array) 
    id = 2 
    name = 'two' 

如果我这样做:

test:Array = someobject as Array 

这只能转换顶部不是内部对象。如果我尝试遍历它并将单个数组'作为数组',它将变为null。

任何想法?

回答

0

as根本不能转换任何东西。
另外,这样做没有意义,你在做什么。当使用字符串键时,ObjectArray之间没有区别。所以你为什么要这样做?

格尔茨
back2dos

+0

有差异。尝试:'var a = new Array();一个[ “foo” 的] = “栏”; var str = JSON.stringify(a)'。 'str'将是'[]'。 – kolar 2014-09-04 08:03:45

+0

@kolar:你所指的区别并不是'Array'和'Object'所固有的,但是取决于你使用的是什么样的JSON序列化器。如果需要传输带有非数字键的数组,则可以检测序列化程序中的那些数组并将它们处理为对象。 – back2dos 2014-09-09 15:05:54

0

您需要一个包含数组的数组,每个数组都包含单个对象?然后,你必须创建新的数组,并推入新的数组。类型转换不能转换嵌套的对象。

var mainArray:Array = SomeObject as Array 
var newArray:Array = []; 
for each (var o:Object in mainArray) { 
    newArray.push([o]); 
} 
0

不,我觉得这不是什么意思?

它基本上是从对象到数组转换。那将是:

var myTestArr:Array = new Array(); 
// FILL IT (for testing) 
var myTestArr2:Array = getArrofArr(myTestArr); // This will be the result 

function getArrofArr(inArr:Array):Array { 
    var retArr:Array = new Array(); 
    for (var entry in inArr){ 
     var addArr:Array = new Array(); 
     for (var entryKey in inArr[entry]){ 
      addArr[entryKey] = inArr[entry][entryKey]; 
     } 
     retArr[entry] = addArr; 
    } 
    return retArr; 
} 
0

我看到你想要数组,但如果我会建议你一个dictinoary呢?

var someObject:Array=new Array(); 
for(var i:int=0;i<3;i++) 
{ 
    var d:Dictionary=new Dictionary(); 
    d["id"]=i; 
    d["name"]="name"+i.toString(); 
    someObject.push(d); 
}