迭代器.prototype.every()

实验性: 这是一个 实验性技术
在生产环境中使用此技术之前,请仔细查看 浏览器兼容性表

every() 方法用于 迭代器 实例,类似于 Array.prototype.every():它测试迭代器生成的每个元素是否都通过由提供的函数实现的测试。它返回一个布尔值。

语法

js
every(callbackFn)

参数

callbackFn

对迭代器生成的每个元素执行的函数。它应返回一个 真值 以指示元素通过测试,否则返回一个 假值。该函数使用以下参数调用

element

正在处理的当前元素。

index

正在处理的当前元素的索引。

返回值

如果 callbackFn 对每个元素都返回一个 真值,则返回 true。否则,返回 false

描述

every() 迭代迭代器,并为每个元素调用一次 callbackFn 函数。如果回调函数返回假值,它会立即返回 false。否则,它会迭代到迭代器的末尾,并返回 true。如果 every() 返回 false,则通过调用其 return() 方法关闭底层迭代器。

迭代器帮助器相对于数组方法的主要优势是它们能够处理无限迭代器。对于无限迭代器,every() 在发现第一个假值时立即返回 false。如果 callbackFn 始终返回真值,则该方法永远不会返回。

示例

使用 every()

js
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

调用 every() 始终会关闭底层迭代器,即使该方法提前返回。迭代器永远不会处于半途状态。

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

规范

规范
迭代器帮助器
# sec-iteratorprototype.every

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅