2009-12-22 4 views
1

Essayez de compiler:Ordre des objets dans des objets dans ActionScript

var object:Object = {}; 

object.one = "foo"; 
object.two = "foo"; 
object.three = "foo"; 
object.four = "foo"; 

for(var key:String in object) 
{ 
    trace(key); 
} 

... vous obtiendrez:

one 
four 
two 
three 

Pourquoi l'ordre foiré?

+1

L'article suivant offre quelques explications: http://www.darronschall.com/weblog/2006/02/subtle-change-in-forin-loops-for-actionscript-3.cfm –

Répondre

1

Les clés d'un objet ne sont pas commandées. Si vous devez conserver la commande et faire une recherche, vous devez créer une collection personnalisée offrant cette fonctionnalité.

0

Que "foiré" ordre?

Il n'y a pas d'ordre de propriétés sur un objet. for...in peut itérer sur eux dans l'ordre qu'il aime.

2

L'objet dans AS3 peut être vu comme une table de hachage où le nom de champ est la clé. Donc, vous ne pouvez pas compter sur l'ordre de création pour obtenir le même ordre lors de la boucle à travers le champ, l'ordre dépendra de l'algorithme utilisé pour hacher le nom du champ.

Questions connexes