Appeler une fonction en transformant un tableau en la liste de parametres de la

leocd Messages postés 6 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 16 février 2009 - 15 févr. 2009 à 23:27
@karamel Messages postés 1816 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 30 novembre 2022 - 19 févr. 2009 à 13:03
Bonjour à tous !

Bon ok, le titre n'est peu être pas très clair...

J'essaie d'être plus précis : j'ai un tableau T avec N éléments d'indices de 0 à N-1. je veux appeler une fonction myFunction avec tous les éléments du tableau comme paramètres, mais de telle sorte que chaque élément soit un paramètre.

l'équivalent de ceci :
myFunction(T[0], T[1], ..., T[N-1]);

sauf que N serait une variable.

Si quelqu'un savait faire ça, je le remercie d'avance.

8 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
16 févr. 2009 à 09:07
bnjour

function appel(arr)
{  for ( var n=0;nmon Site][M'écrire]Bul
0
leocd Messages postés 6 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 16 février 2009
16 févr. 2009 à 11:00
Bien que ce soit effectivement une solution au problème, c'est pas vraiment ce que je cherche. Pour donner un exemple plus concret, on peut imaginer une fonction qui va en appeler une autre, avec une liste de parametres... bon ok pas très clair tout ça, je donne un peu de code :

function uneFonctionQuelconque(p1, p2, p3)
{
   alert(p1+p2,+p3);
}

function uneAutreFonction(p1)
{
   alert(p1);
}

function callAFunction(fct)
{
   var i, a = callAFunction.arguments;
  var b = new Array;
  
  for(i = 1; i < a.length; i++)
  {
      b[i - 1] = a[i];
  }
// a ce stade on a les parametres complementaires de la fonction dans b
// mtn on veut appeler la fonction
fct(je mets quoi ici ? en fait je ne sait pas par avance combien il y a de parametres);
}

// exemple d'appel
callAFunction(uneFonctionQuelconque, 101, 48, 78);
callAFunction(uneAutreFonction, 'kikou!');

------------------------------------------------------------
Oui je sais, présenté comme ça ca n'a aucun interet ... En fait il s'agit d'une bibliothéque, ici seule la fonction callAFunction est une fonction de la bibliothéque, et dans sa version complete, elle efectue certaines oppération avant d'appeler la fonction, elle a donc bien son utilité ^^ ...
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
16 févr. 2009 à 11:15
>>avec une liste de parametres
ah... rien à voir avec un array donc à priori
tu voudras gérer les paramètre passés, qui
sont en nombre.... variable.

    function f()
    {    for ( var n=0; n < arguments.length; n++)
        {    alert( arguments[n] );    }
    }
   
    f('a','b','c');

si j'ai compris !!!
0
leocd Messages postés 6 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 16 février 2009
16 févr. 2009 à 12:24
Tout d'abord merci pour tes réponses rapides !

On y est presque :-p

Cette partie du code je l'ai déjà dans callAFunction(fct) :

var i, a = callAFunction.arguments;
  var b = new Array;
  
  for(i = 1; i < a.length; i++)
  {
      //... ici on peut traiter tous les parametres (je commence à 1 car je connais déjà le premier)
  }

maintenant imaginons que la fonction f que tu nous as écrit appelle une autre fonction g avec tous les parametres qu'elle a reçu en parametre. Existe t-il un moyen de renvoyer reellement une liste de parametres, sans renvoyer un tableau ( mais rteelement un nombre variable de parametre ).

En fait ce qui m'interesse c'est plus ou moins l'opposée de ce que tu nous proposes, c'est à dire envoyer un nombre n de parametres, un tableau par exemple, mais que la fonction puisse récuperer comme parametres indépendants, et non un seul tableau.

dans ton example on a une liste de parametres, qu'on lit dans un tableau. Moi j'ai un tableau et je veux en faire une liste de parametres pour appeler une fonction qui prend un nombre N de parametres.
0

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

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
16 févr. 2009 à 12:36
>>imaginons que la fonction f que tu nous as écrit appelle une autre
fonction g
>>avec tous les parametres qu'elle a reçu en parametre.
ben... arguments.
si j'ai compris !!!!!
0
leocd Messages postés 6 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 16 février 2009
16 févr. 2009 à 12:43
function f()
{
   g(arguments);
}
   
f('a','b','c');

comme ca tu veux dire ?

mais la on va devoir ecrire g comme ça non ? : function g(tableau){ ... }
ce que je voudrais, c'est g comme ça : function g(a, b, c){ ... }
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
16 févr. 2009 à 13:04
oui.
arguments est un tableau des arguments passés

ce que tu veux faire est impossible !
tu ne connais pas le nombre de paramètres à mettre dans g
donc on ne peut pas décrire ainsi
fait g() et utilise y arguments,

pour l'appel de g... il te reste à le faire
tu peux regarder .caller ça te conviendra peut-être
0
@karamel Messages postés 1816 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 30 novembre 2022 145
19 févr. 2009 à 13:03
bonjour
je suis pas sure d'avoir compris

mais au sujet des parametres on peut verifier le nombres de parametres et donc decider de ci qu'il y a a faire en fonction de ce nombre

ex 1
<html>
<head>
<script>
function bou(azert,azere){
alert(azert)
if(azere){
alert(azere)
}
}
</script>
</head>

blabla

</html>

ex 2

<html>

<head>

<script>

function bou(azert,azere){

alert(azert)

if(azere){

alert(azere)

}

}

</script>

</head>



blabla



</html>
0