Iterator.prototype.find()
Baseline
2025
Newly available
Since โจMarch 2025โฉ, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
find()
๋ฉ์๋๋ Iterator
์ธ์คํด์ค์ ๋ฉ์๋๋ก, Array.prototype.find()
์ ์ ์ฌํฉ๋๋ค. ์ด ๋ฉ์๋๋ ์ ๊ณต๋ ํ
์คํธ ํจ์๋ฅผ ๋ง์กฑํ๋ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํฉ๋๋ค. ๋ง์ฝ ํ
์คํธ ํจ์๋ฅผ ๋ง์กฑํ๋ ๊ฐ์ด ์๋ค๋ฉด, undefined
๊ฐ ๋ฐํ๋ฉ๋๋ค.
๊ตฌ๋ฌธ
find(callbackFn)
๋งค๊ฐ๋ณ์
callbackFn
-
๋ฐ๋ณต์์ ์ํด ์์ฑ๋ ๊ฐ ์์์ ๋ํด ์คํ๋ ํจ์. ์ผ์นํ๋ ์์๋ฅผ ์ฐพ์ผ๋ฉด ๋ฐ๋์ ์ฐธ ๊ฐ์ ๊ฐ์ ๋ฐํํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง ๊ฐ์ ๊ฐ์ ๋ฐํํด์ผ ํฉ๋๋ค. ํด๋น ํจ์๋ ๋ค์๊ณผ ๊ฐ์ ์ธ์์ ํจ๊ป ํธ์ถ๋ฉ๋๋ค.
๋ฐํ ๊ฐ
์ ๊ณต๋ ํ
์คํธ ํจ์๋ฅผ ๋ง์กฑํ๋ ๋ฐ๋ณต์๊ฐ ์์ฑํ ์ฒซ ๋ฒ์งธ ์์์
๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด, undefined
์ด ๋ฐํ๋ฉ๋๋ค.
์ค๋ช
find()
๋ฉ์๋๋ ๋ฐ๋ณต์๋ฅผ ์ํํ๋ฉฐ ๊ฐ ์์์ ๋ํด ํ ๋ฒ์ฉ callbackFn
ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ฝ๋ฐฑ ํจ์๊ฐ ์ฐธ ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ฉด ์ฆ์ ํด๋น ์์๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ๋ณต์์ ๋๊น์ง ์ํํ๊ณ undefined
๋ฅผ ๋ฐํํฉ๋๋ค. find()
๊ฐ ์์๋ฅผ ๋ฐํํ๋ฉด, ๊ธฐ๋ณธ ๋ฐ๋ณต์๋ return()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ซํ๋๋ค.
๋ฐฐ์ด ๋ฉ์๋์ ๋นํด ๋ฐ๋ณต์ ํฌํผ์ ์ฃผ์ ์ฅ์ ์ ๋ฌดํ ๋ฐ๋ณต์์ ์์
ํ ์ ์๋ค๋ ์ ์
๋๋ค. ๋ฌดํ ๋ฐ๋ณต์์์๋ find()
๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ๊ทธ ์ฆ์ ๋ฐํํฉ๋๋ค. callbackFn
์ธ์ ๋ ๊ฑฐ์ง ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ค๋ฉด, ๋ฉ์๋๋ ์ ๋ ๋ฐํํ์ง ์์ต๋๋ค.
์์
find() ์ฌ์ฉํ๊ธฐ
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()
๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ํญ์ ๊ธฐ๋ณธ ๋ฐ๋ณต์๋ฅผ ๋ซ์ต๋๋ค. ์ด๋ ๋ฉ์๋๊ฐ ์กฐ๊ธฐ์ ๋ฐํ๋๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๋ฐ๋ณต์๋ ์ ๋ ์ค๊ฐ ์ํ๋ก ๋จ๊ฒจ์ง์ง ์์ต๋๋ค.
const seq = fibonacci();
console.log(seq.find(isEven)); // 2
console.log(seq.next()); // { value: undefined, done: true }
๋ช ์ธ์
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # sec-iterator.prototype.find |
๋ธ๋ผ์ฐ์ ํธํ์ฑ
Loadingโฆ