Moyen plus efficace pour supprimer un élément d'un tableau en Actionscript 3
J'ai un tableau d'objets. Chaque objet a une propriété appelée nom. Je veux supprimer efficacement un objet avec un nom particulier à partir du tableau. Est-ce la MEILLEURE façon de faire?
private function RemoveSpoke(Name:String):void {
var Temp:Array=new Array;
for each (var S:Object in Spokes) {
if (S.Name!=Name) {
Temp.push(S);
}
}
Spokes=Temp;
}
Vous devez vous connecter pour publier un commentaire.
Si vous êtes prêt à dépenser un peu de mémoire sur une table de correspondance, ce sera assez rapide:
Le test pour cette ressemble à ceci:
}
name
de la propriété ou de laindexOf
méthode recherche dans tous les biens de la valeur de l'objet?myArray.splice(myArray.indexOf(moninstance), 1);
Le moyen le plus rapide sera présent:
Vous pouvez également supprimer l'instruction de retour si vous voulez vous débarrasser de tous les alements qui correspondent le prédicat.
Je n'ai pas de données à sauvegarder, mais ma conjecture est que tableau.filtre pourrait être le plus rapide.
En général, vous devriez préférer la vieille pour la boucle "pour chaque" et "pour chaque" et l'utilisation de Vecteur si vos éléments sont du même type. Si la performance est vraiment important que vous devriez considérer l'utilisation d'une liste liée.
Découvrez Subvention Skinners diapositives http://gskinner.com/talks/quick/ et Jackson Dunstan Blog pour plus d'infos sur l'optimisation.
Si vous n'avez pas l'esprit en utilisant le type arraycollection, qui est un wrapper pour la classe Array, vous pourriez faire quelque chose comme ceci:
Vous pouvez également utiliser de type arraycollection avec un filterFunction pour obtenir une vue sur le même objet Array
Peut-être cette technique (optimisé épissure méthode par CJ) vont améliorer encore celui proposé par Quasimondo:
http://cjcat.blogspot.com/2010/05/stardust-v11-with-fast-array-splicing_21.html
Voici un fonctionnement efficace en termes de réutilisabilité, vous permettant de faire plus que de supprimer l'élément. Il renvoie l'index, ou -1 si elle ne trouve pas.