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

Signaler
Messages postés
6
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
16 février 2009
-
Messages postés
1797
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
21 novembre 2021
-
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

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
bnjour

function appel(arr)
{  for ( var n=0;nmon Site][M'écrire]Bul
Messages postés
6
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
16 février 2009

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é ^^ ...
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>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 !!!
Messages postés
6
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
16 février 2009

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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>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 !!!!!
Messages postés
6
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
16 février 2009

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){ ... }
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
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
Messages postés
1797
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
21 novembre 2021
139
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>