将对象数组转换为数组数组

时间:2010-09-02 09:53:33

标签: arrays actionscript-3 casting

我有一个对象数组,如下所示:

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 

这只会转换顶部而不是内部对象。如果我尝试遍历它并将各个数组作为数组',它就会变为空。

任何想法?

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

我看到你想要数组,但是如果我建议你使用词典呢?

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);
}

答案 3 :(得分:0)

as根本不会转换任何内容 此外,没有必要这样做,你正在做什么。使用字符串键时,ObjectArray之间没有区别。那你为什么要那样做?

格尔茨
back2dos