Skip to content

Opérateur Rest

L'opérateur Rest, également introduit avec ES6 (ECMAScript 2015), est similaire en syntaxe à l'opérateur spread (...), mais il est utilisé pour des objectifs différents. Alors que l'opérateur spread « étale » les éléments d'un itérable, l'opérateur Rest regroupe les éléments en un seul tableau. Voici quelques exemples d'utilisation de l'opérateur Rest :

1. Regroupement de Paramètres de Fonction

L'opérateur Rest est fréquemment utilisé dans les définitions de fonctions pour regrouper un nombre indéterminé d'arguments en un tableau.

javascript
function somme(...nombres) {
    return nombres.reduce((acc, curr) => acc + curr, 0);
}

console.log(somme(1, 2, 3, 4)); // 10
function somme(...nombres) {
    return nombres.reduce((acc, curr) => acc + curr, 0);
}

console.log(somme(1, 2, 3, 4)); // 10

Dans cet exemple, ...nombres est un paramètre Rest qui collecte tous les arguments passés à la fonction somme dans un tableau nombres.

2. Extraction de Certaines Valeurs, Reste dans un Tableau

Vous pouvez également utiliser l'opérateur Rest pour extraire certaines valeurs tout en regroupant les valeurs restantes dans un tableau.

javascript
let [premier, deuxieme, ...restants] = [1, 2, 3, 4, 5, 6];
console.log(premier);    // 1
console.log(deuxieme);   // 2
console.log(restants);   // [3, 4, 5, 6]
let [premier, deuxieme, ...restants] = [1, 2, 3, 4, 5, 6];
console.log(premier);    // 1
console.log(deuxieme);   // 2
console.log(restants);   // [3, 4, 5, 6]

Ici, premier et deuxieme prennent respectivement les premières et deuxièmes valeurs du tableau, tandis que ...restants regroupe toutes les valeurs restantes.

3. Séparation des Propriétés d'Objet

Bien que l'opérateur Rest soit principalement utilisé avec les tableaux, il peut aussi être utilisé avec les objets pour extraire certaines propriétés, en regroupant le reste dans un autre objet.

javascript
let { a, b, ...restants } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a);        // 1
console.log(b);        // 2
console.log(restants); // { c: 3, d: 4 }
let { a, b, ...restants } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a);        // 1
console.log(b);        // 2
console.log(restants); // { c: 3, d: 4 }

Avantages et Utilisations

  • Flexibilité dans les Fonctions : Permet de créer des fonctions pouvant prendre un nombre variable d'arguments.
  • Clarté et Maintenance : Rend le code plus clair et facile à maintenir, surtout lorsqu'il s'agit de traiter des arguments ou des propriétés en masse.
  • Décomposition Pratique : Facilite la séparation des éléments ou des propriétés d'un objet, en regroupant ce qui reste après avoir extrait les éléments souhaités.