迭代器.prototype.every()
every()
方法用于 迭代器
实例,类似于 Array.prototype.every()
:它测试迭代器生成的每个元素是否都通过由提供的函数实现的测试。它返回一个布尔值。
语法
js
every(callbackFn)
参数
返回值
如果 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 表仅在浏览器中加载