제너레이터와 이터레이터

1211 단어 JavaScriptJavaScript

제너레이터와 이터레이터를 이용해서 홀수만 출력해보자.

    function* infinity(){
        let i =0;
        while(true){
            yield i++
        }
    }

먼저 수를 무한하게 만들수 있는 infinity를 만들었다.

const infi = infinity();
console.log(infi.next());
console.log(infi.next());
console.log(infi.next());
console.log(infi.next());

이런식으로 찍어보면

{ value: 0, done: false }
{ value: 1, done: false }
{ value: 2, done: false }
{ value: 3, done: false }

이렇게 값들이 계속 증가하면서 찍힌다.

이제 이 infinity를 이용해서 특정 범위의 수를 찍어보자

	function* limit(a){
        for(const i of infinity()){
            if(i === a) return;
            yield i
        }
    }

for...of 를 이용해서

for(const i of limit(10)){
	console.log(i)
}

를 하면 10보다 작은 수들이 찍힌다. 다시 이걸 이용해서 홀수만 찍어보려면

    function* odds(a){
        for(const i of limit(a)){
            if(i%2) yield i;
        }
    }
    
    for(const i of odds(10)) console.log(i)

이제 이러면 10보다 작은 홀수를 출력할 수 있다.

좋은 웹페이지 즐겨찾기