2017-10-04 8 views
16

मुझे वास्तव में foreach का उपयोग करना सी # में "लूप्स" के लिए निर्माण करना पसंद है। मुझे लगता है कि यह बहुत साफ, कुशल और पठनीय है।क्या सी # कार्यान्वयन के समान टाइपस्क्रिप्ट में कोई फोरच निर्माण है?

क्या टाइपस्क्रिप्ट में कोई समान निर्माण है? उदाहरण के लिए, बजाय इस के लिए:

setAuthorFilters(selectedAuthors) 
{ 
    selectedAuthors.forEach(x => this.setAuthorFilter(x)); 
    this.updateUrl();   
} 

setAuthorFilter(selectedAuthor) 
{ 
    this.vm.SelectAuthors = this.vm.SelectAuthors.filter(x => x.id !== selectedAuthor.id); 
    this.vm.PreviousSelectedAuthors = this.vm.CurrentSelectedAuthors.slice(); 
    this.vm.CurrentSelectedAuthors.push(selectedAuthor); 
} 

मैं यह करने के लिए करना चाहते हैं:

setAuthorFilters(selectedAuthors) 
{ 
    foreach(var selectedAuthor in selectedAuthors) 
    { 
     this.vm.SelectAuthors = this.vm.SelectAuthors.filter(x => x.id !== selectedAuthor.id); 
     this.vm.PreviousSelectedAuthors = this.vm.CurrentSelectedAuthors.slice(); 
     this.vm.CurrentSelectedAuthors.push(selectedAuthor); 
    } 
    this.updateUrl();   
} 

उत्तर

20

हाँ, for ... of

जैसे

for(let author of authors) 
{ 
    ... 
} 

क्योंकि आप टाइपस्क्रिप्ट का उपयोग कर रहे हैं, यह आईई में भी काम करता है। https://basarat.gitbooks.io/typescript/content/docs/for...of.html देखें:

पूर्व ES6 के लिए लक्ष्य टाइपप्रति के लिए मानक उत्पन्न होगा (वर मैं = 0; मैं < list.length; i ++) पाश की तरह।

सादे जावास्क्रिप्ट में, टाइपप्रति बिना हां, तो इस आईई (source) में समर्थित नहीं है

अद्यतन: तय करने के लिए let अधिक var से सी # के समान है। उदाहरण अपडेट किया गया।

+2

ध्यान दें कि 'के लिए ..' का उपयोग जेएस [इटेरबल्स] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) के साथ किया जा सकता है, जबकि प्री-ईएस 6 अनुवाद उन लोगों के साथ काम नहीं करेगा। – Kroltan

+2

@ क्रोलटन यह भी ध्यान देने योग्य है कि कंपाइलर में 'डाउनलवेइटरेशन' विकल्प है जो ईएस 3 वातावरण में भी समर्थन को सक्षम बनाता है। – Gerrit0

संबंधित मुद्दे