2016-08-11 2 views
3

자바 스크립트에서 생성자의 값으로 배열을 만들고 싶습니다. 발전기 내가 배열에 그 값을 저장하지만, 완료 발전기까지 next()를 사용하는 것이 가장 좋은 방법은 가능하지 않는 것 원하는이자바 스크립트에서 생성기로 배열 만들기

function* sequenceGenerator(minVal, maxVal) { 
    let currVal = minVal; 

    while(currVal < maxVal) 
     yield currVal++; 
} 

같은 동적 길이의 시퀀스를 생성한다 (그리고 아주 추한 모습 정직하십시오).

var it, curr, arr; 

it = sequenceGenerator(100, 1000); 
curr = it.next(); 
arr = []; 

while(! curr.done){ 
    arr.push(curr.value); 
} 

어떻게하면 생성기에서 직접/생성기 내에서 배열을 만들 수 있습니까? 그렇지 않은 경우 루프를 피하거나 숨길 수 있습니까? 어쩌면 map 또는 그런 것을 사용하면 될까요?

미리 감사드립니다.

답변

5

function* sequenceGenerator() { 
 
    let currVal = this.minVal; 
 
    while(currVal <= this.maxVal) yield currVal++; 
 
} 
 
var obj = {minVal: 10, maxVal:20}, 
 
    arr; 
 
obj[Symbol.iterator] = sequenceGenerator; 
 
arr = [...obj]; 
 
console.log(arr);
나는

var arr = Array.from(sequenceGenerator(min, max)); 

작품 aswell 다른 방법을 발견했다.

14

한 짧은 솔루션이 될 수 있습니다

let list = [...sequenceGenerator(min, max)] 

문서 MDN

+0

멋진 솔루션입니다. 게시 해 주셔서 감사합니다. –

1

당신은 이런 식으로 작업을 수행 할 수 있습니다;

관련 문제