Passer un tableau en paramètre d'une fonction en JavaScript
J'aimerais appeler une fonction à l'aide d'un tableau comme paramètres:
const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); //I don't like it
function call_me (param0, param1, param2 ) {
//...
}
Est-il une meilleure façon de transmettre le contenu de x
en call_me()
?
Vous devez vous connecter pour publier un commentaire.
Voir MDN docs pour
Function.le prototype.appliquer()
.Si l'environnement prend en charge ECMAScript 6, vous pouvez utiliser un la propagation de l'argument à la place:
Pourquoi ne pas passer l'ensemble de la matrice et de les traiter en tant que de besoin à l'intérieur de la fonction?
call_me
fonction. Il manque juste un point-virgule à la fin.En supposant que call_me est une fonction globale, de sorte que vous ne vous attendez pas à être ensemble.
Dans l'ES6 standard, une nouvelle la propagation de l'opérateur
...
qui fait exactement cela.Il est pris en charge par tous les navigateurs sauf IE.
La propagation de l'opérateur peut faire beaucoup d'autres choses utiles, et le lien de la documentation fait un très bon travail en montrant que.
Comme @KaptajnKold avait répondu
Et vous n'avez pas besoin de définir tous les paramètres pour call_me fonction.
Vous pouvez simplement utiliser
arguments
Note ce
//---------------------------
page html
pouvez appeler la fonction avec toute Args
ou
Les arguments de la fonction peuvent également être des Tableaux:
JS:
de-sûr, on peut aussi utiliser propagation:
JS:
Tout en utilisant la propagation de l'opérateur il faut noter qu'il doit être le dernier ou le seul paramètre passé. Sinon ce sera un échec.
Si vous avez besoin pour passer un tableau en argument de départ que vous pouvez faire:
vous pouvez utiliser la propagation de l'opérateur, en plus d'un formulaire de base
dans le cas de fonctions qui retournent des tableaux, mais il devrait se passer comme arguments
Exemple:
La réponse a déjà été donnée, mais je veux juste donner mon morceau de gâteau. Ce que vous voulez atteindre est appelé
method borrowing
dans le contexte de JS, que lorsque nous prenons une méthode d'un objet et de l'appeler dans le contexte d'un autre objet. Il est assez fréquent de prendre éventail de méthodes et de les appliquer à des arguments. Laissez-moi vous donner un exemple.Nous avons donc "super" fonction de hachage qui prend deux nombres comme argument et renvoie "super fort" haché chaîne:
C'est très bien, mais nous avons peu de problème avec l'approche ci-dessus, il est contraint, ne fonctionne qu'avec deux chiffres, ce n'est pas dynamique, nous allons le faire fonctionner avec n'importe quel nombre et de plus vous n'avez pas à passer un tableau (vous pouvez si vous insistez toujours). Ok, Assez parlé, battons-nous!
La solution naturelle serait d'utiliser
arr.join
méthode:Oh, l'homme. Malheureusement, cela ne marchera pas. Parce que nous sommes d'appel de hachage(arguments) et les arguments de l'objet est à la fois objet iterable et de tableau, mais pas un vrai tableau. Comment se fait-dessous approche?
L'astuce est appelé
method borrowing.
Nous empruntons un
join
méthode à partir d'un réseau régulier[].join.
Et l'utilisation[].join.call
pour l'exécuter dans le contexte dearguments
.Pourquoi ça marche?
C'est parce que l'algorithme interne de la méthode native
arr.join(glue)
est très simple.Prises à partir de la spécification de la près de “en”:
Donc, techniquement, il le prend et se joint à cette[0], [1] ...etc ainsi que. C'est intentionnellement écrit d'une manière qui permet à n'importe quel tableau comme ceci (pas une coïncidence, de nombreuses méthodes à suivre cette pratique). C'est pourquoi il travaille également avec
this=arguments.
1-vous pouvez vous joindre le tableau dans une chaîne
2-le passer à la fonction
3-appel d'split
appel de la méthode:
ou même