迭代器.prototype.find()
find()
方法类似于 Array.prototype.find()
:它返回迭代器产生的第一个满足提供的测试函数的元素。如果没有任何值满足测试函数,则返回 undefined
。
语法
js
find(callbackFn)
参数
callbackFn
-
对迭代器产生的每个元素执行的函数。它应该返回一个 真值 来表示已找到匹配的元素,否则返回一个 假值。该函数使用以下参数调用
返回值
迭代器产生的第一个满足提供的测试函数的元素。否则,返回 undefined
。
描述
find()
迭代迭代器并为每个元素调用一次 callbackFn
函数。如果回调函数返回真值,则立即返回该元素。否则,它会迭代到迭代器的末尾并返回 undefined
。如果 find()
返回一个元素,则通过调用其 return()
方法关闭基础迭代器。
迭代器助手相对于数组方法的主要优势在于它们能够处理无限迭代器。对于无限迭代器,find()
在找到第一个满足条件的元素后立即返回。如果 callbackFn
始终返回假值,则该方法永远不会返回。
示例
使用 find()
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().find(isEven)); // 2
const isNegative = (x) => x < 0;
console.log(fibonacci().take(10).find(isNegative)); // undefined
console.log(fibonacci().find(isNegative)); // Never completes
调用 find()
始终会关闭基础迭代器,即使该方法提前返回。迭代器永远不会处于半途状态。
js
const seq = fibonacci();
console.log(seq.find(isEven)); // 2
console.log(seq.next()); // { value: undefined, done: true }
规范
规范 |
---|
迭代器助手 # sec-iteratorprototype.find |
浏览器兼容性
BCD 表格仅在浏览器中加载