此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
Iterator.prototype.some()
Baseline 2025Newly available
Since March 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Iterator 实例的some() 方法与Array.prototype.some() 类似:它测试迭代器中是否至少有一个生成的元素通过提供的函数实现的测试。它返回一个布尔值。
In this article
语法
js
some(callbackFn)参数
callbackFn为迭代器中的每个元素执行的函数。它应该返回一个真值来表示元素通过了测试,否则返回一个假值。该函数被调用时将传入以下参数:
返回值
如果回调函数对至少一个元素返回了真值,则返回true。否则,返回false。
描述
some() 迭代该迭代器,并对每个元素调用一次callbackFn 函数。如果callbackFn 返回真值,则立即返回true。否则,它会一直迭代到迭代器的末尾,并返回false。如果some() 返回true,则会调用底层迭代器的return() 方法以关闭它。
迭代器辅助方法相对于数组方法的主要优势在于它们能够处理无限迭代器。对于无限迭代器,some() 会在第一次找到真值时立即返回true。如果callbackFn 始终返回假值,则该方法永远不会返回。
示例
>使用 some()
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().some(isEven)); // trueconst isNegative = (x) => x < 0;const isPositive = (x) => x > 0;console.log(fibonacci().take(10).some(isPositive)); // falseconsole.log(fibonacci().some(isNegative)); // 永远不会结束调用some() 总是关闭底层迭代器,即使方法提前返回。迭代器永远不会处于中间状态。
js
const seq = fibonacci();console.log(seq.some(isEven)); // trueconsole.log(seq.next()); // { value: undefined, done: true }规范
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-iterator.prototype.some> |