Spec-Zone.ru › JavaScript

Iterator.prototype.drop()

Базовая версия Недавно доступно

Эта функция работает в новейших устройствах и версиях браузеров. Эта функция может не работать в старых устройствах или версиях браузеров. Она доступна во всех браузерах с марта 2025 года.

Метод drop() экземпляров Iterator возвращает новый объект-помощник итератора, который пропускает заданное количество элементов в начале данного итератора.

Синтаксис

drop(limit)

Параметры

limit
Количество элементов, которые нужно отбросить в начале итерации.

Возвращаемое значение

Новый объект-помощник итератора. При первом вызове метода next() возвращенного помощника итератора текущий итератор немедленно продвигается на limit элементов, а затем выдается следующий элемент (limit+1-й элемент). Затем помощник итератора выдает оставшиеся элементы один за другим. Если текущий итератор имеет меньше, чем limit элементов, новый помощник итератора будет немедленно завершен при первом вызове next().

Исключения

RangeError
Генерируется, если limit становится NaN или отрицательным при преобразовании в целое число.

Примеры

Использование drop()

Следующий пример создает итератор, который выдает члены последовательности Фибоначчи, начиная с 3-го члена, отбрасывая первые два члена:

function* fibonacci() {
  let current = 1;
  let next = 1;
  while (true) {
    yield current;
    [current, next] = [next, current + next];
  }
}

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

Это эквивалентно:

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

Использование drop() с циклом for...of

drop() наиболее удобен, когда вы не создаете итератор вручную. Поскольку итераторы также являются итерируемыми объектами, вы можете перебирать возвращенного помощника с помощью цикла for...of:

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

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

Комбинирование drop() и take()

Вы можете скомбинировать drop() с Iterator.prototype.take(), чтобы получить срез итератора:

for (const n of fibonacci().drop(2).take(5)) {
  // Drops the first two elements, then takes the next five
  console.log(n);
}
// Logs:
// 2
// 3
// 5
// 8
// 13

for (const n of fibonacci().take(5).drop(2)) {
  // Takes the first five elements, then drops the first two
  console.log(n);
}
// Logs:
// 2
// 3
// 5

Нижняя и верхняя границы счетчика отбрасываемых элементов

Когда limit отрицательно или NaN, генерируется RangeError:

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

Когда limit больше, чем общее количество элементов, которое может произвести итератор (например, Infinity), возвращенный помощник итератора немедленно отбросит все элементы, а затем будет завершен при первом вызове next(). Если текущий итератор бесконечен, возвращенный помощник итератора никогда не завершится.

fibonacci().drop(Infinity).next(); // Never ends
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 }

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-iterator.prototype.drop

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
drop
122
117–119
122
117–119
131
108
103–105
18.4
122
117–119
131
81
78–79
18.4
26.0
24.0–25.0
122
117–119
18.4
1.1.31
1.39
22.0.0

См. также

  • Полифил Iterator.prototype.drop в core-js
  • Полифил es-shims для Iterator.prototype.drop
  • Iterator
  • Iterator.prototype.take()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator/drop

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API