Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment transformer un tableau en arguments varibables pour appeler une fonction ?

16 réponses
Avatar
Pascal Pensa
Bonjour,

Je suis confronté au petit soucis suivant:

J'ai un tableau

var tablo=[
["a","b"],
["x","y","z"],
....
]

et une fonction à arguments variables sur laquelle je veux appeler:

fct("a","b");
fct("x","y","z");
fct(...)

Comment faire pour transformer chaque sous tableau pour pouvoir appeler la
fonction à arguments varibles ?

Merci de votre aide, j'ai cherché un peu sur google mais là je sèche !
Pascal

10 réponses

1 2
Avatar
Pascal Pensa
J'ai oublié de préciser que je cherchais à le faire sans utiliser eval, mais
je suis pas sur que ce soit possible (?)

Pascal

"Pascal Pensa" a écrit
dans le message de news: 4330576f$0$1018$
Bonjour,

Je suis confronté au petit soucis suivant:

J'ai un tableau

var tablo=[
["a","b"],
["x","y","z"],
....
]

et une fonction à arguments variables sur laquelle je veux appeler:

fct("a","b");
fct("x","y","z");
fct(...)

Comment faire pour transformer chaque sous tableau pour pouvoir appeler la
fonction à arguments varibles ?

Merci de votre aide, j'ai cherché un peu sur google mais là je sèche !
Pascal




Avatar
YD

J'ai un tableau

var tablo=[
["a","b"],
["x","y","z"],
....
]

et une fonction à arguments variables sur laquelle je veux appeler:

fct("a","b");
fct("x","y","z");
fct(...)


et fct(tablo[i].join()) ne ferait pas l'affaire ?

Merci de votre aide, j'ai cherché un peu sur google mais là je sèche !


Avant Google, une doc javascript avec recherche sur le type d'objets
sur lequel on veut travailler me semble bien plus indiquée. La doc
Windows script en fichier d'aide (.chm) peut faire l'affaire (en
français), quelque part sur le site de l'éditeur, ou le guide du
javascript 1.5 (in english)
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide>


--
Y.D.

Avatar
Cenekemoi
...
J'ai un tableau

var tablo=[
["a","b"],
["x","y","z"],
....
]

et une fonction à arguments variables sur laquelle je veux appeler:

fct("a","b");
fct("x","y","z");
fct(...)

Comment faire pour transformer chaque sous tableau pour pouvoir
appeler la fonction à arguments varibles ?


AMHA, le plus simple et efficace est que l'argument de la fonction soit
une ligne du tableau :


function fct(liste) {
for (var i=0; i<liste.length; i++) {
var element = liste[i];
...
}
}

et on appelle fct comme ceci :

for (var i=0; i<tablo.length; i++) {
result = fct(tablo[i]);
...
}

--
Cordialement, Thierry ;-)

Avatar
Pascal Pensa
"Cenekemoi" a écrit dans le message de news:
43310330$0$27434$
...

Comment faire pour transformer chaque sous tableau pour pouvoir
appeler la fonction à arguments varibles ?


AMHA, le plus simple et efficace est que l'argument de la fonction soit
une ligne du tableau :



Bien entendu, mais je ne suis pas propriétaire du script dont la fonction
prend un nombre d'arguments variables c'est un package inclus qui vient d'un
autre site de la société et que je n'ai pas le droit de bricoler.

Pascal


Avatar
Pascal Pensa
"YD" a écrit dans le message de news:
4330708f$0$17236$

...
et fct(tablo[i].join()) ne ferait pas l'affaire ?


Bonjour et merci pour la suggestion mais ça ne fonctionne pas, la fct
appelée ne voit qu'une string composée des éléments du tableau séparés par
des virgules, pas des arguments séparés.

Bon en attendant j'ai codé un truc moche mais qui marche:

for(var i=0; i<tablo.length; i++) {
var param=""
for(var j=0; j<tablo[i].length; j++)
param += (j>0?",'":"'")+tablo[i][j]+"'"

eval("fct("+param+")")
}

Je trouve ça assez naze de ma part, mais si vous avez une meilleure idée...

Pascal

Merci de votre aide, j'ai cherché un peu sur google mais là je sèche !


Avant Google, une doc javascript avec recherche sur le type d'objets
sur lequel on veut travailler me semble bien plus indiquée. La doc
Windows script en fichier d'aide (.chm) peut faire l'affaire (en
français), quelque part sur le site de l'éditeur, ou le guide du
javascript 1.5 (in english)
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide


Merci, mais j'ai lu la doc et je n'y ai pas trouvé ma réponse sauf eval mais
ça ne me plait pas beaucoup, on va dire que c'est pas très beau comme code
;-)

Pascal


Avatar
ASM
Pascal Pensa wrote:
"YD" a écrit dans le message de news:
4330708f$0$17236$

...

et fct(tablo[i].join()) ne ferait pas l'affaire ?



Bonjour et merci pour la suggestion mais ça ne fonctionne pas, la fct
appelée ne voit qu'une string composée des éléments du tableau séparés par
des virgules, pas des arguments séparés.

Bon en attendant j'ai codé un truc moche mais qui marche:


dommage ! çà me semblait assez élégant comme méthode.
sinon :

fct('"'+tabl[i].join('","')+'"');

çà ferait-y ?

ou en 2 temps :

var attrib = "'"+tabl[i].join("','")+"'";
fct(attrib);

for(var i=0; i<tablo.length; i++) {
var param=""
for(var j=0; j<tablo[i].length; j++)
param += (j>0?",'":"'")+tablo[i][j]+"'"

eval("fct("+param+")")
}


Ha? la fonction à multiples paramètres de nombre variable
n'a, en fait, qu'un paramètre ?




--
Stephane Moriaux et son [moins] vieux Mac


Avatar
YD
"YD" a écrit dans le message de news:

et fct(tablo[i].join()) ne ferait pas l'affaire ?


Bonjour et merci pour la suggestion mais ça ne fonctionne pas, la fct
appelée ne voit qu'une string composée des éléments du tableau séparés par
des virgules, pas des arguments séparés.


Au temps pour moi, je relis la doc...

for(var i=0; i<tablo.length; i++) {
var param=""
for(var j=0; j<tablo[i].length; j++)
param += (j>0?",'":"'")+tablo[i][j]+"'"

eval("fct("+param+")")
}


Je simplifierai en écrivant sur une ligne :
eval('fct("' + tablo[i].join('", "') + '")');

C'est certainement une des rares occasions où il est difficile de se passer
de eval() ! Et comme la contrainte de ne pas toucher à la fonction est
impérative si j'ai bien compris...

--
Y.D.


Avatar
ASM
YD wrote:

Je simplifierai en écrivant sur une ligne :
eval('fct("' + tablo[i].join('", "') + '")');


j'avais essayé :

fct("'" + tablo[i].join("', '") + "'");

et çà n'avait pas fonctionné ... toujours groupation des élements
faudrait peut-être passer par un replace apres un join() standard ?

C'est certainement une des rares occasions où il est difficile de se passer
de eval() ! Et comme la contrainte de ne pas toucher à la fonction est
impérative si j'ai bien compris...


çà n'empèche peut-être pas de faire un pre-traitement-décodage-traduction
des arguments ?

var args = traduction(tablo[i]);
fct(args);

reste à trouver le truc pour la conversion ...

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
ASM
YD wrote:

var args = traduction(tablo[i]);
fct(args);

reste à trouver le truc pour la conversion ...



Impossible ! Le type liste ou énumération de valeurs/variables n'existe
pas en JS !
'args' ne peut donc pas être une liste de valeurs...


donc on en revient à :

var args = eval(tablo[i])

c'est çà ?

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
YD

çà n'empèche peut-être pas de faire un pre-traitement-décodage-traduction
des arguments ?

var args = traduction(tablo[i]);
fct(args);

reste à trouver le truc pour la conversion ...


Impossible ! Le type liste ou énumération de valeurs/variables n'existe pas en JS !
'args' ne peut donc pas être une liste de valeurs...

--
Y.D.

1 2