Tableaux ....

AtomPouce Messages postés 568 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 18 juillet 2006 - 26 août 2003 à 13:10
theKam Messages postés 40 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 6 mars 2006 - 5 déc. 2003 à 02:05
Bijour !
G un petit probleme , je Vous explik:
G un tableau,ensuite je veu cree un tableau temporaire qui sera une copie de mon tableau original, de sorte que je puisse modifier une valeur de mon tableau temporaire sans que celle de mon tableau original ne soit modifier ...
je vous montre mon code :
tablo_original = [12, 13, 15];
tablo2 = tablo_original;
tablo2[0] = "changement";
trace(tablo_original[0]);

et voila on remarque ke la sortie affiche "changement", alors que je n avait meme pas toucher a tablo_original
d ou vient ce probleme ?
comment faire pour que je puisse modifier tablo2 sans que tablo_original ne change ?
merci de repondre !
(si C pas clair dites le !)

2 réponses

afad Messages postés 715 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 10 septembre 2009
27 août 2003 à 11:02
Hello AtomPouce, Je fais pas trop confiance en ta syntaxe :
tablo2 = tablo_original;
Ce ne sont pas de simples variables mais des tableaux..

Essaye plutôt cette méthode elle permet de transfèrer terme à terme les éléments du tableaux à l'aide d'une boucle FOR.


tablo_original = new Array();
tablo2 = new Array();
var i;

tablo_original = [12, 13, 15];

for (i=0; i<3; i++) {
tablo2[i] = tablo_original[i];
}

tablo2[0] = "changement";
trace(tablo_original[0]);



A+
aFaD
0
theKam Messages postés 40 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 6 mars 2006
5 déc. 2003 à 02:05
Ouaip, je confirme.
Quand tu fais tablo2 = tablo_original, tu ne recopies pas les valeurs de tablo_original dans tablo2.
Tu crées simplement une nouvelle variable pointe (argh... ca y est, j'ai utilisé le terme de pointeur....) toujorsu sur le même tableau.

Pour ce qui est de dupliquer réellement le tableau, tu peux faire une boucle comme le propose afad, ou utilsier la fonction concat de Array.

exemple :
var tabA = new Array("12 dans tabA", 13, 15) ;

var tabB = new Array() ;
tabB = tabB.concat(tabA) ;

tabB[0] = "pas 12 mais 13" ;
trace(tabA[0]) ;// -> affiche "12 dans tabA"
trace(tabB[0]) ;// -> affiche "pas 12 mais 13"

Kam
Dofus - Ankama Studio
0
Rejoignez-nous