Quatre méthodes pour échanger deux variables

Échanger vos variables va devenir un jeu d'enfant !
Mardi 7 juillet 2020

Voici un petit post très simple qui vous montrera différentes manières d’échanger 2 variables.

Problématique

En tant que débutant, nous avons tendance à vouloir écrire ce type de code pour échanger une variable a et une variable b.

a = 5;
b = 7;
a = b;
b = a;
console.log(a, b); // Retourne 7 et 7

Or cette technique ne fonctionne pas car nous écrasons la variable a au début que nous affectons à b. Du coup nous nous retrouvons avec deux variables ayant la même valeur.

Utilisation d’une variable temporaire

let a = 2;
let b = 5;
tmp = a;
a = b;
b = tmp;
console.log(a, b); // Retourne 5 et 2

Voici la première manière “algorithmique”. Cette technique consiste à utiliser une variable temporaire tmp, ce qui permet de sauvegarder la valeur de a avant de l’écraser.

Utilisation des mathématiques

Une technique consiste à utiliser le pouvoir des mathématiques, en stockant deux variables dans une seule.

let a = 2;
let b = 5;
a = a - b;
b = a + b;
a = b - a;
console.log(a, b); // Retourne 5 et 2

Cette technique, bien que plus compliqué au premier abord, peut être pertinente car elle utilise un emplacement de variable en moins.

Attention: cette technique ne fonctionne que si a et b sont des entiers.

Utilisation d’une méthode fourbe

Voici une technique qui tient sur une seule ligne, avant l’arrivée de la déstructuration.

Cette technique à cependant pour défaut de ne pas être très lisible.

let a = 2;
let b = 5;
b = [a, (a = b)][0];
console.log(a, b); // Retourne 5 et 2

Utilisation de la déstructuration

Voici le Graal de l’inversion de variables qui se fait en une seule ligne. En plus d’être lisible, elle tient sur une seule ligne !

Une technique qui fonctionne sur la plupart des langages modernes (fonctionne en javascript et python) consiste à utiliser la déstructuration. Voici un exemple.

let a = 2;
let b = 5;
[a, b] = [b, a];
console.log(a, b); // Retourne 5 et 2

a,b = b,a - c’est le b.a-ba :D


Articles recommandés