Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Iterator : méthode drop()

Baseline 2025
Newly available

Depuis March 2025, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.

La méthode drop() des instances de Iterator retourne un nouvel objet d'aide à l'itérateur qui ignore le nombre d'éléments donné au début de cet itérateur.

Syntaxe

js
drop(limit)

Paramètres

limit

Le nombre d'éléments à ignorer au début de l'itération.

Valeur de retour

Un nouvel objet d'aide à l'itérateur. La première fois que la méthode next() de l'objet d'aide retourné est appelée, l'itérateur courant avance immédiatement de limit éléments, puis le prochain élément (le limit+1-tième élément) est produit. L'objet d'aide à l'itérateur produit ensuite les éléments restants un par un. Si l'itérateur courant contient moins de limit éléments, le nouvel objet d'aide à l'itérateur sera immédiatement terminé lors du premier appel à next().

Exceptions

RangeError

Levée si limit devient NaN ou négatif lors de la conversion en entier.

Exemples

Utiliser la méthode drop()

L'exemple suivant crée un itérateur qui produit les termes de la suite de Fibonacci, en commençant à partir du troisième terme en ignorant les deux premiers termes :

js
function* fibonacci() {
  let actuel = 1;
  let suivant = 1;
  while (true) {
    yield actuel;
    [actuel, suivant] = [suivant, actuel + suivant];
  }
}

const seq = fibonacci().drop(2);
console.log(seq.next().value); // 2
console.log(seq.next().value); // 3

Cela équivaut à :

js
const seq = fibonacci();
seq.next();
seq.next();

Utiliser drop() avec une boucle for...of

drop() est particulièrement pratique lorsque vous ne gérez pas manuellement l'itérateur. Comme les itérateurs sont également itérables, vous pouvez parcourir l'aide retournée avec une boucle for...of :

js
for (const n of fibonacci().drop(2)) {
  console.log(n);
  if (n > 30) {
    break;
  }
}

// Affiche :
// 2
// 3
// 5
// 8
// 13
// 21
// 34

Combiner drop() avec take()

Vous pouvez combiner drop() avec Iterator.prototype.take() pour obtenir une portion d'un itérateur :

js
for (const n of fibonacci().drop(2).take(5)) {
  // Ignore les deux premiers éléments, puis prend les cinq suivants
  console.log(n);
}
// Affiche :
// 2
// 3
// 5
// 8
// 13

for (const n of fibonacci().take(5).drop(2)) {
  // Prend les cinq premiers éléments, puis ignore les deux premiers
  console.log(n);
}
// Affiche :
// 2
// 3
// 5

Limites inférieure et supérieure du nombre d'éléments ignorés

Lorsque limit est négatif ou NaN, une exception RangeError est levée :

js
fibonacci().drop(-1); // RangeError: -1 must be positive
fibonacci().drop(undefined); // RangeError: undefined must be positive

Lorsque limit est supérieur au nombre total d'éléments que l'itérateur peut produire (comme Infinity), l'objet d'aide à l'itérateur retourné ignorera instantanément tous les éléments et sera terminé lors du premier appel à next(). Si l'itérateur courant est infini, l'objet d'aide à l'itérateur retourné ne sera jamais terminé.

js
fibonacci().drop(Infinity).next(); // Ne se termine jamais
new Set([1, 2, 3]).values().drop(Infinity).next(); // { value: undefined, done: true }
new Set([1, 2, 3]).values().drop(4).next(); // { value: undefined, done: true }

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-iterator.prototype.drop

Compatibilité des navigateurs

Voir aussi