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

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。

有什么想法吗?

4个回答

1
你需要一个包含数组的数组,每个数组都包含单个对象吗?那么你必须创建一个新的数组,并将新的数组推入其中。类型转换无法转换嵌套对象。
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

我知道你想要数组,但如果我建议你使用字典呢?

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

0

as根本不会转换任何东西。
而且,你所做的事情是没有意义的。在使用字符串键时,ObjectArray 没有区别。所以你为什么要这样做呢?

问候
back2dos


有所不同。尝试:var a=new Array(); a["foo"]="bar"; var str=JSON.stringify(a)str 将会是 [] - kolar
@kolar:你所提到的差异并不是 ArrayObject 本身固有的,而是取决于你使用的 JSON 序列化器的类型。如果传输带有非数字键的数组是一个要求,你可以在序列化器中检测它们,并将其处理为对象。 - back2dos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接