La meilleure façon d'enlever tous les éléments d'un Tableau ActionScript?
Je suis en train d'écrire une application en Flex /ActionScript et ont un certain nombre de membre de la classe des variables de type Tableau de stockage des données.
Ma question est: quelle est la "meilleure" façon d'effacer un objet de Tableau?
J'ai remarqué que le type arraycollection classe a une fonction removeAll() qui le fait, mais la base de la Matrice de classe ne comprend pas. Certaines possibilités que j'ai vu sont:
- Parcourant le tableau, l'appel de la pop ou maj sur chaque élément
- Réglage de la longueur du tableau à 0
- Paramètre de la variable de membre de un "new Array()" ou "[]"
OriginalL'auteur Chris R | 2009-09-25
Vous devez vous connecter pour publier un commentaire.
Je dirais:
C'est explicite, court, et fait bon usage de la VM du garbage collector.
Votre première alternative exécute un grand nombre de code interprété pour obtenir le même résultat.
Je ne sais pas que la deuxième fait ce que vous voulez; si elle le fait, c'est hacky, incertaine.
Le "new Array()" variante de la troisième alternative est juste verbeux, offrant aucun avantage par rapport à un littéral de tableau. Si vous aussi vous écrire JS et l'utilisation JSLint, vous aurez engueuler pour ne pas utiliser le littéral de tableau de formulaire.
montableau.longueur = 0 est plus incertaine dans le sens qu'il introduit un inutilement la partie descriptive de l'ensemble lorsque tout ce qui doit être transmise au lecteur est "delete array". La troncature fonction de la longueur de poseur d'abord m'a frappé comme une sorte de bonus. De toute façon, Christopher W. Allen-Poole (cwallenpoole) réponse fait beaucoup de sens et semble légèrement plus apparente, puisque le "splice" l'opération est plus littérale et est conçu spécifiquement pour supprimer éléments.
OriginalL'auteur Warren Young
J'ai peur de le dire mais Warren Jeunes est faux quand il dit que la définition de la myArray = [] cause le garbage collector pour ramasser le tableau.
que vous avez la possibilité d'ajouter une référence à lui-même à l'intérieur de lui-même, et ne devrait donc jamais être recueillies et l'utilisation de la mémoire, surtout si le tableau a quelques Sprites dans le tableau, comme ils seraient les références de tableau et ils n'auraient jamais être collectées.
Sly_cardinal et Richard Szalay sont 100% correct. mais la longueur de paramètre n'est pas nécessaire de Richard.
À totalement effacer le tableau et s'assurer que son collectées par le garbage puis
OriginalL'auteur WORMSS
Cela dépend de votre contexte. Alors que l'aide de M. Young réponse est souvent la plus correcte de faire les choses, il ne fonctionne pas toujours, surtout si vous avez deux variables pointant vers le même tableau:
D'autre part, si vous avez réellement vide le tableau manuellement:
bar.splice(0); // Pas de boucle nécessaire 🙂
OriginalL'auteur cwallenpoole
Si vous pouvez modifier le tableau de référence, puis j'irais avec Warren réponse. Si vous avez besoin de modifier l'instance existante, vous pouvez également utiliser Tableau.splice:
OriginalL'auteur Richard Szalay
Selon ce test la meilleur est la mise en longueur = 0
OriginalL'auteur Denis Maslov