Variable modifiée alors que non concernée ??

Résolu
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 19 sept. 2006 à 09:03
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 19 sept. 2006 à 20:49
Bonjour à tous,

encore un problème...

j'ai déclaré mon tableaux "artistes".
ensuite je veux en faire une copie :

var expand_artistes_tab = artistes;

ce nouveau tableau sera semblable par les clés et la structure, mais pas par les valeurs, que je vais modifier.
Le problème, c'est que quand je modifie une case du tableau "expand_artistes_tab", ça modifie aussi la même case du tableau "artistes" !

la ligne en question :
expand_artistes_tab[i] = LireCookie("artiste_"+i);
 implique
artistes[i] = LireCookie("artiste_"+i);

pourtant, la fonction en question LireCookie a été prise sur Internet, et je n'ai rien changé dedans pour qu'elle modifie le tableau "artistes" ! je la mets en-dessous au cas où, mais je ne vois pas pourquoi elle serait fautive. Surtout que attention:

si je définis moi-même le tableau expand_artistes_tab[i] valeur par valeur, sans faire var x = y, le problème ne se pose plus !!

quelle est l'erreur à votre avis ? merci !!

        function getCookieVal(offset){
            var endstr=document.cookie.indexOf (";", offset);
            if (endstr==-1) endstr=document.cookie.length;
            return unescape(document.cookie.substring(offset, endstr));
        }
        function LireCookie(nom){
            var arg=nom+"=";
            var alen=arg.length;
            var clen=document.cookie.length;
            var i=0;
            while (i<clen){
                var j=i+alen;
                if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
                i=document.cookie.indexOf(" ",i)+1;
                if (i==0) break;
            }
            return null;
        }

5 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
19 sept. 2006 à 20:32
B
onjour à tous...






var a= new Array("a","b","c"); // Création d'un Tableau
var b=a;                                  // Création d'un POINTEUR sur le tableau déclaré car a est un tableau (1)
var c =a.slice(0);                      // Création d'un nouvel objet Array






(1) d'objet quelconque plus généralement cela peut être utile pour swaper des enregistrements par exemple, mais cela peut être dangereux aussi.





;0)
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
19 sept. 2006 à 09:06
Je n'ai peut-être pas été très clair quand j'ai dit :

si je définis moi-même le tableau expand_artistes_tab[i] valeur par valeur, sans faire var x = y, le problème ne se pose plus !!

c'est à dire que je déclare explicitement les deux tableaux exactement de la même façon :

artistes[1] = "Pierre";
expand_artistes_tab[1] = "Pierre";

etc.
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
19 sept. 2006 à 10:39
bonjour,

   j'ai lu ça, il n'y a pas très longtemps...
   je ne sais plus où ??? Alzenheimer ??? 
   désolé de ne pouvoir donner le lien et citer les "auteurs"



<Script type= "Text/JavaScript">

var a=new Array("a","b","c");
var b=a;
var c=a.slice(0);





b[1]="xxx";
c[2]="yyy";





for ( var i=0;imon Site
    
=Bul
M'écrire


<hr />
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
19 sept. 2006 à 17:15
Merci Bultez !
et d'où pense-tu que vienne ce pb, est-ce un bug de javascript à proprement, ou une propriété que je ne connaîtrai pas ?
à+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
19 sept. 2006 à 20:49
Ah d'accord je vois ! Merci beaucoup à vous deux, vous m'avez bien aidé.
à bientôt
0
Rejoignez-nous