Iterator.prototype.some()
some()
方法的 Iterator
实例类似于 Array.prototype.some()
:它测试迭代器产生的至少一个元素是否通过提供的函数实现的测试。它返回布尔值。
语法
js
some(callbackFn)
参数
callbackFn
-
要对迭代器产生的每个元素执行的函数。它应该返回一个 真值 来表明元素通过了测试,否则返回一个 假值。该函数使用以下参数调用
返回值
如果回调函数对至少一个元素返回 真值,则为 true
。否则为 false
。
描述
some()
迭代迭代器,并对每个元素调用一次 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)); // true
const isNegative = (x) => x < 0;
const isPositive = (x) => x > 0;
console.log(fibonacci().take(10).some(isPositive)); // false
console.log(fibonacci().some(isNegative)); // Never completes
调用 some()
始终会关闭底层迭代器,即使该方法提前返回也是如此。迭代器永远不会处于半途状态。
js
const seq = fibonacci();
console.log(seq.some(isEven)); // true
console.log(seq.next()); // { value: undefined, done: true }
规范
规范 |
---|
迭代器助手 # sec-iteratorprototype.some |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。