2010-09-02 5 views
3

J'ai un tableau d'objets qui est quelque chose comme ceci:Conversion tableau d'objets à tableau de tableaux

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

je besoin d'être un tableau de tableaux, quelque chose comme ceci:

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

Si je fais:

test:Array = someobject as Array 

Ce ne convertit que le haut et non les objets internes. Si j'essaie de faire une boucle et de faire des tableaux individuels 'sous forme de tableaux', cela devient nul.

Des idées?

Répondre

0

as ne convertit rien du tout.
aussi, il est inutile de faire, ce que vous faites. lorsque vous travaillez avec des clés de chaîne, il n'y a pas de différence entre Object et Array. alors pourquoi voudriez-vous faire ça?

greetz
back2dos

+0

Il existe des différences. Essayez: 'var a = new Array(); un ["foo"] = "bar"; var str = JSON.stringify (a) '. 'str' sera' [] '. – kolar

+0

@kolar: La différence à laquelle vous faites référence n'est pas inhérente à 'Array' et' Object', mais dépend du type de sérialiseur JSON que vous utilisez. Si la transmission de tableaux avec des clés non numériques est requise, vous pouvez les détecter dans le sérialiseur et les traiter comme s'il s'agissait d'objets. – back2dos

0

Vous avez besoin d'un tableau, contenant des tableaux, chacun d'entre eux contient un seul objet? Ensuite, vous devez créer un nouveau tableau et y ajouter de nouveaux tableaux. La conversion de type ne peut pas convertir les objets imbriqués.

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

Non, je pense que ce n'est pas ce que voulait dire ...

Il est essentiellement une conversion des objets à des tableaux. Ce sera:

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

Je te vois voulez des tableaux, mais si je vais vous proposer un Dictinoary à la place?

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