Iterator.prototype.every()
åºçº¿
2025
æè¿å¯ç¨
èª March 2025 èµ·ï¼æ¤ç¹æ§å·²å¨ææ°æµè§å¨ä¸å¾å°æ¯æãä½å¨è¾æ§çè®¾å¤ææµè§å¨ä¸å¯è½æ æ³è¿è¡ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
Iterator å®ä¾ç every() æ¹æ³ä¸ Array.prototype.every() 类似ï¼å®æµè¯è¿ä»£å¨çææçæçå
ç´ æ¯å¦é½è½éè¿ç±æä¾ç彿°å®ç°çæµè¯ãå®è¿åä¸ä¸ªå¸å°å¼ã
è¯æ³
every(callbackFn)
åæ°
è¿åå¼
妿 callbackFn 为ææå
ç´ é½è¿åçå¼ï¼å为 trueï¼å¦å为 falseã
æè¿°
every() è¿ä»£è¯¥è¿ä»£å¨ï¼å¹¶å¯¹æ¯ä¸ªå
ç´ è°ç¨ä¸æ¬¡ callbackFn 彿°ã妿 callbackFn è¿ååå¼ï¼åç«å³è¿å falseãå¦åï¼å®ä¼ä¸ç´è¿ä»£å°è¿ä»£å¨çç»å°¾ï¼å¹¶è¿å trueã妿 every() è¿å falseï¼åä¼è°ç¨åºå±è¿ä»£å¨ç return() æ¹æ³ã
è¿ä»£å¨è¾
婿¹æ³ç¸å¯¹äºæ°ç»æ¹æ³ç主è¦ä¼å¿å¨äºå®ä»¬è½å¤å¤çæ éè¿ä»£å¨ãå¯¹äºæ éè¿ä»£å¨ï¼every() ä¼å¨ç¬¬ä¸æ¬¡æ¾å°å弿¶ç«å³è¿å falseã妿 callbackFn å§ç»è¿åçå¼ï¼åè¯¥æ¹æ³æ°¸è¿ä¸ä¼è¿åã
示ä¾
>ä½¿ç¨ every()
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().every(isEven)); // false
const isPositive = (x) => x > 0;
console.log(fibonacci().take(10).every(isPositive)); // true
console.log(fibonacci().every(isPositive)); // æ°¸è¿ä¸ä¼å®æ
è°ç¨ every() æ»æ¯å
³éåºå±è¿ä»£å¨ï¼å³ä½¿æ¹æ³æåè¿åãè¿ä»£å¨æ°¸è¿ä¸ä¼å¤äºä¸é´ç¶æã
const seq = fibonacci();
console.log(seq.every(isEven)); // false
console.log(seq.next()); // { value: undefined, done: true }
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-iterator.prototype.every> |