Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modifier un tableau via une fonction

Possible ?

    9 avril 2009 à 11:01:01

    Bonjour,

    après une recherche infructueuse sur google et sur le forum (j'obtiens des résultats qui n'ont rien a voir avec les mots clés ><), je viens poser mes questions ici :

    En javascript, lorsque l'on envoi un tableau à une fonction, est-ce une copie du tableau ? D'après mes tests, il semblerait que oui. Si c'est bien le cas, est-il possible pour une fonction de modifier un tableau ? (sans avoir à déclarer ce tableau en variable globale)

    Merci d'avance pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      9 avril 2009 à 12:09:51

      Et les développeurs inventèrent alors le return :) .
      • Partager sur Facebook
      • Partager sur Twitter
        9 avril 2009 à 12:40:50

        Enfait, cela ne fait pas une copie de l'array..
        Si tu modifies l'array dans la fonction, il sera modifier.

        var a = [1,2,3];
        var b = function(arr) { arr[2] = 5; };
        b(a);
        alert(a[2]); //Alert 5 et non 3
        
        • Partager sur Facebook
        • Partager sur Twitter
          9 avril 2009 à 12:43:51

          Parce que sont des pointeurs, non ? (même si en JS, ça se voit pas explicitement...)
          • Partager sur Facebook
          • Partager sur Twitter
            9 avril 2009 à 12:46:37

            J'sais pas, un truc du genre. Je sais que perso ça m'a toujours cassé les * mais bon xD
            • Partager sur Facebook
            • Partager sur Twitter
              9 avril 2009 à 12:54:20

              Bah c'est comme le fait de ne pas pouvoir dupliquer un tableau sans recopier chacun des éléments...

              var a = [1,2,3];
              var b = a;
              b[0] = 19;
              alert(a[0]); // Renvoit normalement 19... <img src="Templates/images/smilies/pinch.png" alt=">_<" class="smilies"/>
              
              • Partager sur Facebook
              • Partager sur Twitter
                9 avril 2009 à 13:00:01

                function duplicate(obj)
                {
                	if (obj instanceof Array)
                	{
                		var ret = [];
                		
                		for (var i=0; i < obj.length; i++)
                		{
                			ret.push(duplicate(obj[i]));
                		}
                		return ret;
                	}
                	else if (obj instanceof Object)
                	{
                		var ret = {};
                		
                		for (var i in obj)
                		{
                			ret[i] = duplicate(obj[i]);
                		}
                		return ret;
                	}
                	else {
                		return obj;
                	}
                }
                


                =)
                • Partager sur Facebook
                • Partager sur Twitter
                  9 avril 2009 à 13:08:44

                  C'est bien ce que je dis ! xD

                  Mais merci, c'est vrai que ça peut servir.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Modifier un tableau via une fonction

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown