Romain Durand

Échanger deux cases d'un tableau

On peut facilement échanger les valeurs des cases d'un tableau, sans avoir à en faire de copie, ni à utiliser de variable intermédiaire, ça peut être pratique dans certains algos.

const arr = [0, 1, 4, 3, 2]

//on échange les valeurs des cases d'index 2 et 4
[arr[2], arr[4]] = [arr[4], arr[2]]
// arr => [0, 1, 2, 3, 4]

Cette technique repose sur l'affectation par destructuration (ou destructuring assignment). On l'utilise habituellement pour créer ou redéfinir des variables à partir d'un tableau.

const [a, b] = ['foo', 'bar', 'baz']
// a => 'foo'
// b => 'bar'

C'est une syntaxe qui est devenue courante depuis la montée en popularité des hooks React, notamment le useState qui retourne un tableau que l'on déstructure pour créer le getter/setter d'un state.

const [myValue, setMyValue] = useState('value')

Dans notre premier exemple, les variables vers lesquelles on déstructure le tableau existent déjà, ce sont les cases arr[2] et arr[4]. On fait donc une assignation au lieu d'une déclaration en omettant le mot-clé const. Le tableau déstructuré est créé à la volée, il ne contient que deux éléments, les valeurs dont on souhaite échanger la position.

C'est cette double assignation, réalisée en une seule instruction qui permet d'effectuer cette permutation sans utiliser de variable intermédiaire.

Source: AlgoJS (YouTube Shorts)