92 votes

Les opérateurs Splat en JavaScript, équivalents aux *args et **kwargs en Python ?

J'utilise beaucoup Python, et je suis en train d'apprendre rapidement JavaScript en ce moment (ou devrais-je dire réapprendre). Je voulais donc demander quel est l'équivalent de *args et **kwargs en JavaScript ?

2voto

N Djel Okoye Points 421

Pour ceux qui seraient un peu perdus au sujet des variables magiques *args et **kwargs, lire http://book.pythontips.com/en/latest/args_and_kwargs.html

Résumé : *args et **kwargs sont juste des façons conventionnelles d'écrire les variables magiques. Vous pourriez simplement dire * et ** ou *var et **vars. Cela dit, parlons de l'équivalent JavaScript en 2019.

*args en python représente un tableau JavaScript, par exemple ["one", "two", "three"] pour passer cela dans une fonction python, il suffit de définir la fonction comme def function_name(*args) : ce qui signifie que cette fonction accepte les "tableaux" ou les "listes si vous le souhaitez" pour l'appeler, il suffit d'utiliser function function_name(["one", "two", "three"]) :

La même chose en JavaScript peut être faite en utilisant :

function func(x,y,z){
  ...
}
let args = ["one", "two", "three"];

func(...args)

**or more dynamically as**

 function func(inputs<T>:Array){

   for(index in inputs){

      console.log(inputs[index]);
   }
}
let args = ["one", "two", "three"];

func(args)

Jetez un coup d'œil à https://codeburst.io/a-simple-guide-to-destructuring-and-es6-spread-operator-e02212af5831

**kwargs d'autre part représente juste un tableau de paires clé-valeur (objets), c'est tout. Ainsi, **kwargs est par exemple [{"longueur" : 1, "hauteur" : 2}, {"longueur":3, "hauteur" : 4}].

en python, pour définir une fonction acceptant un tableau d'objets, il suffit de dire def function_name(**kwargs) : puis pour l'appeler, on peut faire function_name( [{"length" : 1, "height" : 2}, {"length":3, "height" : 4}]) :

de même en JS

const kwargs = [{"length": 1, "height": 2}, {"length":3, "height": 4}]

function func(obj1, obj2){
  ...
}

func(...kwargs);

**or more dynamically as:**

const kwargs = [{"length": 1, "height": 2}, {"length":3, "height": 4}]

function func(obj){
  for(const [key, value] of Object.entries(obj)){
    console.log(key, ": ", value)
 }

func(kwargs);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X