Iterator.prototype.every()
Базовая версия Недавно появившаяся
Эта функция работает на последних устройствах и в последних версиях браузеров. Эта функция может не работать в более старых устройствах или версиях браузеров. Она доступна во всех браузерах с марта 2025 года.
Метод every() экземпляров Iterator похож на Array.prototype.every(): он возвращает false, если находит элемент, который не удовлетворяет предоставленной тестовой функции. В противном случае, если итератор исчерпан без нахождения такого элемента, он возвращает true.
Синтаксис
every(callbackFn)
Параметры
-
callbackFn - Функция, выполняемая для каждого элемента, сгенерированного итератором. Она должна возвращать истинное (truthy) значение, чтобы указать, что элемент проходит тест, и ложное (falsy) значение в противном случае. Функция вызывается со следующими аргументами:
-
element - Текущий обрабатываемый элемент.
-
index - Индекс текущего обрабатываемого элемента.
-
Возвращаемое значение
true, если callbackFn возвращает истинное (truthy) значение для каждого элемента. В противном случае, false.
Описание
every() итерирует итератор и вызывает функцию callbackFn один раз для каждого элемента. Он немедленно возвращает false, если функция обратного вызова возвращает ложное (falsy) значение. В противном случае он итерирует до конца итератора и возвращает true. Если every() возвращает false, базовый итератор закрывается путем вызова его метода return().
Основное преимущество вспомогательных функций итератора перед методами массива заключается в том, что они являются ленивыми, то есть они производят следующее значение только по запросу. Это позволяет избежать ненужных вычислений, а также позволяет использовать их с бесконечными итераторами. С бесконечными итераторами every() возвращает false, как только найдено первое ложное (falsy) значение. Если callbackFn всегда возвращает истинное (truthy) значение, метод никогда не возвращается.
Вызов every() всегда закрывает базовый итератор, даже если метод возвращает значение досрочно. Итератор никогда не остается в промежуточном состоянии.
Примеры
Использование every()
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().every(isEven)); // false
const isPositive = (x) => x > 0;
console.log(fibonacci().take(10).every(isPositive)); // true
console.log(fibonacci().every(isPositive)); // Never completes
Метод закрывает итератор после возврата.
const seq = fibonacci();
console.log(seq.every(isEven)); // false
console.log(seq.next()); // { value: undefined, done: true }
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | |
every |
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.everyвcore-js - Полифил es-shims для
Iterator.prototype.every IteratorIterator.prototype.find()Iterator.prototype.some()Array.prototype.every()
© 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/every