begin process at 2012 05 27 22:27:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Supprimer élément dans array


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Supprimer élément dans array

mercredi 22 avril 2009 à 09:21:53 | Supprimer élément dans array

Orange73

Membre Club
Hello,

En AS3, j'ai un array de ce genre :

var myArray:Array = new Array("pomme","poire","banane","fraise");

Je souhaiterais , par exemple, supprimer l'élément "poire"...

Je sais que je pourrais faire myArray.splice(1,1);

mais n'y a-t'il pas un autre moyen plus rapide genre un myArray.splice("poire");

Merci

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
mercredi 22 avril 2009 à 10:21:25 | Re : Supprimer élément dans array

Blacknight91titi

Membre Club
Réponse acceptée !
Bonjour,

Cette méthode n'est pas directement implémenter sur la classe Array. Cependant tu peux toujours effectuer une recherche sur ton tableau afin de récupérer les index qui t'intérèsse :

var myArray:Array = ["pomme","poire","fraise"];
var index:uint = myArray.indexOf("poire");
myArray.splice(index,1);

Le problème surviendra lorsque tu as plusieurs éléments identique dans ton tableau.
Pour corriger le problème, il suffit de faire une boucle while du style :
while (myArray.indexOf("poire") != -1)
   //Ici ton code

Conseil : Si tu n'utilises qu'un seul type de donnée, utiles plutôt la classe Vector, tu gagneras en performance

Blacknight
www.osteres.com
mercredi 22 avril 2009 à 10:32:57 | Re : Supprimer élément dans array

Orange73

Membre Club
Ok cool merci Blacknight91titi

Question :

Comment faire pour récupérer l'index de chaque items identiques dans l'array ?
Avec le boucle while oui, mais comment ?

Merci

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
mercredi 22 avril 2009 à 10:37:37 | Re : Supprimer élément dans array

Blacknight91titi

Membre Club
Réponse acceptée !
... Je suis bien gentil aujourd'hui :

var find:String = "poire";

var index:uint = 0;
while ((index = myArray.indexOf(find, index)) != -1)
   myArray.splice(index,1);

Je fournis le deuxième paramètre dans le indexOf pour une question de sécurité.
Dans le cas ou tu ne fais pas de splice notamment (autrement cela te donne une belle boucle sans fin).

Note : code généré sans test préalable. Il est possible qu'il y ait une erreur.
Je t'ai cependant déjà bien aidé, à toi de corriger si nécessaire;)

Blacknight
www.osteres.com
mercredi 22 avril 2009 à 11:05:46 | Re : Supprimer élément dans array

Orange73

Membre Club
Super cool.

Merci

Pourquoi tu dis "Je fournis le deuxième paramètre dans le indexOf pour une question de sécurité. " ? du fait que flash génère une erreur de sécurité genre script trop long a l'exécution ?


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
mercredi 22 avril 2009 à 11:10:06 | Re : Supprimer élément dans array

Orange73

Membre Club
Non j'ai rien dis :-)


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
mercredi 22 avril 2009 à 12:32:59 | Re : Supprimer élément dans array

pegase31

Membre Club Administrateur CodeS-SourceS
En AS3, il existe deux fonction d'Array qui s'appellent "some" et every et qui tourne sur chaque élément du tableau en exécutant une fonciton callBack permettant une comparaison (ou autre) avec l'élément du tableau.

Certes, celà ne s'inscrit pas dans le cadre de ta question, mais ces deux fonction sont bien plus performantes qu'un simple "while" ou un "for".

Dans ton cas, un "for each in" serait aussi fonctionnel, et bien plus sympa qu'un while.

N'oublies pas d'utiliser les Vector si tu es en cs4 et que c'est possible, car encore une fois les performances sont bien meilleures.

Peg'
mercredi 22 avril 2009 à 12:37:10 | Re : Supprimer élément dans array

pegase31

Membre Club Administrateur CodeS-SourceS
ajout du gars un peu plus réveillé :

Dans le code de Blacknight, il est inutile de stocker la valeur de l'indexe, puisque la case est détruite, donc plus besoin du pointeur:

var find:String = "poire";
while (myArray.indexOf(find) != -1)
   myArray.splice(index,1);
}

Et ça marche aussi avec lastIndexOf();

Peg'
mercredi 22 avril 2009 à 13:31:15 | Re : Supprimer élément dans array

gremlins7

Membre Club
Salut,
en fait ce que tu veux faire (si je capte bien) c'est une liste. Une liste peut contenir plusieur items identiques et c'est ce qui fait toute sa puissance. Pour être plus technique ça peut s'apparenter à une CAM (par opposition à RAM) pour Content-Addressable Memory. Ca sert surtout pour les bases de données.
Voici plus d'info sur le sujet : http://fr.wikipedia.org/wiki/M%C3%A9moire_adressable_par_contenu

PS : si tu fait une classe liste ou CAM, je suis preneur :)
mercredi 22 avril 2009 à 13:35:47 | Re : Supprimer élément dans array

pegase31

Membre Club Administrateur CodeS-SourceS
pour ça il y a le XMLList mais il faut une base XML ... et ça se fait tout seul ;)

Peg'

1 2

Cette discussion est classée dans : élément, supprimer, array, myarray, poire


Répondre à ce message

Sujets en rapport avec ce message

élimination d'un élément de array (as3) [ par inaden ] Bonjour à tous et Bonne AnnéeVoilà le pb que j'ai :Le but de l'anim est un jeu de question... appel des question réponse par xml... tout va bienMise e Supprimer un array [ par ghostkill77 ] Bonsoir,J'ai un souci dans mon code actionscript: en effet je souhaiterais supprimer les elements d'un tableau lorsque je clique sur un bouton donner sort() ou sortOn() sur Array [ par Orange73 ] Bonjour,J'ultilise un tableau :myArray:Array = new Array();J'y insere mes noeuds XML :// exemple : countryNode = mainNode[i].attributes.country.myArra supprimer les virgules (,) avec array push [ par cd59 ] Bonjour, comment faire pour ne pas avoir (ou supprimer) les virgules qui s'ajoutent à chaque "Array.push"Car quand je l'enregistre dans un xml j'ai mo Array et suppression d'élément [ par inaden ] Bonjour,voila, j'ai un tableau (array) qui s'appelle diag, un nombre aléatoire qui s'appelle sorti. J'ai essayé de virer l'élément du tableau correspo Récupération Array onPress [ par Orange73 ] Hello,Voila je block sur un truc que je savai faire... mais je me souviens plus LOL.Je n'arrive plus a faire afficher mon trace :var nbItems = 6;var s tableau de TextField en AS2 [ par craminus ] Bonjour,je cherche à créer un tableau de deux dimensions de textField.Ainsi je pourrai les placer à ma guise avec le texte de mon choix avec des actio jeu de cartes [ par FannyC ] petite erreur de script... Il me dit: "**Avertissement** Séquence = distribuer, calque = jeu, image = 54 :Ligne 1 : L'identifiant non sensible à la ha preload de son mp3 [ par jojo_le_ouf ] Bonjour,Je débute dans le monde du flash. J'ai suivis un tutoriel de lecteur mp3 trouvé sur le net. Malheureusement, les sons que le lecteur charge so arreter qu'une partie d'une animation flash [ par pikatchouu ] bonjour mon animation est compose d'un élément texte et d'un élément image défilant en arriéré plan http://www.pepinierebertetto.fr/images/fond/fond.s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales