2017-10-07 12 views
0

ES6 iteration over object values 나는 객체 값을 반복하는 방법을 사용했습니다. 여기 내 구현의 : Javascript 및 Typescript : for..of와 함께 반복되는 객체

function* entries (obj): IterableIterator<any> { 
    for (const key of Object.keys(obj)) { 
     const value = obj[key]; 
     yield [ 
      key, 
      value, 
     ]; 
    } 
} 

가 그럼 난 render()이 구성 요소의 방법 반작용에 그것을 사용하려면 :

render() { 
    const that = this; 
    const newVar = (() => { 
     const elements = []; 
     for (const [key, value] of entries(that.filters)) { 
      elements.push(<h2>{JSON.stringify(key)} {JSON.stringify(value)}</h2>); 
     } 
     return elements; 

    })(); 
    return (
     <section> 
      {newVar} 
     </section> 
    ); 
} 

을하지만이 코드를 디버깅합니다. Chrome 개발자 콘솔의 map 파일, newVar은 빈 배열입니다. entries 발전기에 obj을 알려주면 적절한 물건을 얻었습니다. 나는 정말 간단한 것을 놓치고 있습니까? 모든 대답에 대해 미리 감사드립니다. 나는 es5 옵션으로 Typescript를 사용하며, 생성기를 지원한다는 것을 읽었습니다 : Generators and Iteration for ES5/ES3.

+1

Btw, 당신도'그'도 IIFE도 필요가 없습니다. – Bergi

+1

링크 된 TypeScript 문서에서 언급 한대로'- downlevelIteration' 플래그를 전달 하시겠습니까? – Bergi

+0

@Bergi @Bergi 아니 었어 :) 고마워. 네가 나 한테 대답하기 몇 시간을 낭비 했어. 너의 포스트를 새로운 대답으로 적어. 내가 받아 들일거야. 나는 그것이 어리석은 간단한 것을 알고 있었다 :) –

답변

2

나는 es5 옵션과 함께 Typescript를 사용하며, 생성기를 지원한다고 읽었습니다 : Generators and Iteration for ES5/ES3.

또한 --downlevelIteration 플래그를 사용해야한다고 말합니다. 그렇지 않으면 .length 속성없이 생성자 인스턴스와 같은 반복 가능한 이벤트에서 실패하는 배열 반복으로 for … of 루프가 계속 변합니다.