Iterator.prototype.find()
find() 方法與 Array.prototype.find() 類似:它會返回迭代器產生的第一個滿足指定測試函式的元素。如果沒有值滿足測試函式,則返回 undefined。
語法
js
find(callbackFn)
引數
callbackFn-
一個為迭代器產生的每個元素執行的函式。它應該返回一個 truthy 值來指示已找到匹配的元素,否則返回一個 falsy 值。該函式會以下列引數呼叫:
返回值
迭代器產生的第一個滿足指定測試函式的元素。否則,將返回 undefined。
描述
find() 會迭代迭代器,併為每個元素呼叫一次 callbackFn 函式。如果回撥函式返回一個 truthy 值,則會立即返回該元素。否則,它將一直迭代到迭代器末尾並返回 undefined。如果 find() 返回一個元素,則透過呼叫其 return() 方法來關閉底層迭代器。
迭代器助手相對於陣列方法的主要優點是它們是惰性的,這意味著它們僅在需要時才生成下一個值。這避免了不必要的計算,並且還允許它們與無限迭代器一起使用。對於無限迭代器,find() 會在找到第一個滿足條件的元素後立即返回。如果 callbackFn 始終返回一個 falsy 值,則該方法將永遠不會返回。
示例
使用 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 }
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-iterator.prototype.find |
瀏覽器相容性
載入中…