Iterator.prototype.drop()
Baseline
2025
æè¿å©ç¨å¯è½
March 2025以éããã®æ©è½ã¯ææ°ã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã³ãã©ã¦ã¶ã¼ã§åä½ãã¾ããå¤ã端æ«ããã©ã¦ã¶ã¼ã§ã¯åä½ããªããã¨ãããã¾ãã
drop() 㯠Iterator ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ãæ°ããã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ãªãã¸ã§ã¯ããè¿ãã¾ããããã¯ããã®ã¤ãã¬ã¼ã¿ã¼ã®éå§ä½ç½®ããæå®ããæ°ã®è¦ç´ ãèªã¿é£ã°ãã¾ãã
æ§æ
drop(limit)
弿°
limit-
å復å¦çã®å é ããåé¤ããè¦ç´ ã®æ°ã§ãã
è¿å¤
æ°ããã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ãªãã¸ã§ã¯ãã§ãã è¿ãããã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ã® next() ã¡ã½ãããæåã«å¼ã³åºãããã¨ãç¾å¨ã®ã¤ãã¬ã¼ã¿ã¼ã¯ limit è¦ç´ åã ãå³åº§ã«é²ããããæ¬¡ã®è¦ç´ ï¼limit+1 çªç®ã®è¦ç´ ï¼ãè¿ããã¾ãããã®å¾ãã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ã¯æ®ãã®è¦ç´ ãé ã«è¿ãã¾ããç¾å¨ã®ã¤ãã¬ã¼ã¿ã¼ã limit æªæºã®æ°ã®è¦ç´ ããä¿æãã¦ããªãå ´åãæ°ããã¤ãã¬ã¼ã¿ã¼ãã«ãã¼ã¯ã next() ãæåã«å¼ã³åºãããæç¹ã§å³åº§ã«å¦çãå®äºãã¾ãã
ä¾å¤
RangeError-
limitãæ´æ°ã«å¤æããéã«ãNaNã¾ãã¯è² ã®æ°ã«ãªã£ãå ´åã«çºçãã¾ãã
ä¾
>drop() ã®ä½¿ç¨
次ã®ä¾ã§ã¯ããã£ããããæ°åã®é ãå復å¦çããã¤ãã¬ã¼ã¿ã¼ã使ãã¾ããæåã® 2 é ãçç¥ãã 3 çªç®ã®é ããéå§ãã¾ãã
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}
const seq = fibonacci().drop(2);
console.log(seq.next().value); // 2
console.log(seq.next().value); // 3
ããã¯æ¬¡ã®ãã®ã¨åçã§ãã
const seq = fibonacci();
seq.next();
seq.next();
drop() ã for...of ã«ã¼ãã§ä½¿ç¨
drop() ã¯ãã¤ãã¬ã¼ã¿ã¼ãæä½æ¥ã§ä½æããªãå ´åã«æã便å©ã§ããã¤ãã¬ã¼ã¿ã¼ãå復å¯è½ãªãã¸ã§ã¯ãã§ãããããè¿ããããã«ãã¼ã for...of ã«ã¼ãã§å復å¦çãããã¨ãã§ãã¾ãã
for (const n of fibonacci().drop(2)) {
console.log(n);
if (n > 30) {
break;
}
}
// Logs:
// 2
// 3
// 5
// 8
// 13
// 21
// 34
drop() 㨠take() ã®çµã¿åãã
drop() 㨠Iterator.prototype.take() ãçµã¿åããããã¨ã§ãã¤ãã¬ã¼ã¿ã¼ã®ä¸é¨ãåå¾ãããã¨ãã§ãã¾ãã
for (const n of fibonacci().drop(2).take(5)) {
// æåã® 2 ã¤ã®è¦ç´ ãåé¤ããæ¬¡ã® 5 ã¤ãæ½åºãã
console.log(n);
}
// Logs:
// 2
// 3
// 5
// 8
// 13
for (const n of fibonacci().take(5).drop(2)) {
// æåã® 5 ã¤ã®è¦ç´ ãæ½åºããæ¬¡ã® 2 ã¤ãåé¤ãã
console.log(n);
}
// Logs:
// 2
// 3
// 5
å餿°ã®ä¸éã¨ä¸é
limit ãè² ã®æ°ã NaN ã§ãã£ãå ´åã RangeError ãçºçãã¾ãã
fibonacci().drop(-1); // RangeError: -1 must be positive
fibonacci().drop(undefined); // RangeError: undefined must be positive
limit ãå復å¦çã§çæå¯è½ãªè¦ç´ ã®ç·æ°ããã大ããå ´åï¼Infinity ãªã©ï¼ãè¿ãããå復å¦çãã«ãã¼ã¯ã next() ãæåã«å¼ã³åºãããã¨ãã«ããã¹ã¦ã®è¦ç´ ãå³åº§ã«ç ´æ£ãã¦å®äºãã¾ããç¾å¨ã®å復å¦çãç¡éã§ããå ´åãè¿ãããå復å¦çãã«ãã¼ã¯ã決ãã¦å®äºãã¾ããã
fibonacci().drop(Infinity).next(); // çµäºããªã
new Set([1, 2, 3]).values().drop(Infinity).next(); // { value: undefined, done: true }
new Set([1, 2, 3]).values().drop(4).next(); // { value: undefined, done: true }
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-iterator.prototype.drop > |