2010-09-02 2 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 

Это только преобразует вершину не внутренние объекты. Если я попытаюсь пропустить его и сделать отдельные массивы «массивами», он получит нуль.

Любые идеи?

ответ

0

as ничего не конвертирует.
тоже, нет смысла делать, что вы делаете. при работе со строковыми клавишами нет никакой разницы между Object и Array. так зачем вам это делать?

Greetz
back2dos

+0

Есть различия. Попробуйте: var a = new Array(); а [ "Foo"] = "бар"; var str = JSON.stringify (a) '. 'str' будет' [] '. – kolar

+0

@kolar: Разница, которую вы имеете в виду, не присуща «Array» и «Object», но зависит от того, какой сериализатор JSON вы используете. Если передающие массивы с нечисловыми ключами являются требованием, вы можете обнаружить их в сериализаторе и обрабатывать их, как если бы они были объектами. – back2dos

0

Вам нужен массив, содержащий массивы, каждый из которых содержит один объект? Затем вам нужно создать новый массив и ввести в него новые массивы. Тип cast не может преобразовать вложенные объекты.

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); 
} 
Смежные вопросы