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;
console.log(fibonacci().take(10).some(isNegative)); // 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 }
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-iterator.prototype.some |
瀏覽器相容性
載入中…