Spec-Zone.ru › JavaScript

Iterator.prototype.some()

Базовый уровень Недавно появился

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

Метод some() экземпляров Iterator аналогичен Array.prototype.some(): он возвращает true, если находит элемент, удовлетворяющий предоставленной тестовой функции. В противном случае, если итератор исчерпан, не найдя такого элемента, он возвращает false.

Синтаксис

some(callbackFn)

Параметры

callbackFn
Функция, выполняемая для каждого элемента, сгенерированного итератором. Она должна возвращать истинное значение, чтобы указать, что элемент проходит тест, и ложное значение в противном случае. Функция вызывается со следующими аргументами:
element
Текущий обрабатываемый элемент.
index
Индекс текущего обрабатываемого элемента.

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

true, если функция обратного вызова возвращает истинное значение хотя бы для одного элемента. В противном случае, false.

Описание

some() итерирует итератор и вызывает функцию callbackFn один раз для каждого элемента. Он немедленно возвращает true, если функция обратного вызова возвращает истинное значение. В противном случае он итерирует до конца итератора и возвращает false. Если some() возвращает true, нижележащий итератор закрывается путем вызова его метода return().

Основное преимущество вспомогательных функций итератора над методами массива заключается в том, что они являются ленивыми, то есть генерируют следующее значение только по запросу. Это позволяет избежать ненужных вычислений, а также позволяет использовать их с бесконечными итераторами. С бесконечными итераторами some() возвращает true, как только найдено первое истинное значение. Если callbackFn всегда возвращает ложное значение, метод никогда не возвращается.

Вызов some() всегда закрывает нижележащий итератор, даже если метод возвращает значение досрочно. Итератор никогда не остается в промежуточном состоянии.

Примеры

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

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

const isEven = (x) => x % 2 === 0;
console.log(fibonacci().some(isEven)); // true

const isNegative = (x) => x < 0;
console.log(fibonacci().take(10).some(isNegative)); // false
console.log(fibonacci().some(isNegative)); // Never completes

Метод закрывает итератор после возврата значения.

const seq = fibonacci();
console.log(seq.some(isEven)); // true
console.log(seq.next()); // { value: undefined, done: true }

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

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

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

Desktop Mobile Server
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
some
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.some в core-js
  • Полифилл es-shims Iterator.prototype.some
  • Iterator
  • Iterator.prototype.every()
  • Iterator.prototype.find()
  • Array.prototype.some()

© 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/some

Spec-Zone.ru

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