TypeScript中是否有类似于C#实现的foreach构造?

时间:2017-10-04 16:17:25

标签: c# angular typescript

我真的很喜欢使用foreach构造来实现" for循环"在C#中。我认为它非常干净,高效且易读。

TypeScript中是否有类似的构造?例如,而不是:

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();        
}

1 个答案:

答案 0 :(得分:20)

是的,for ... of

E.g。

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

因为您正在使用TypeScript,所以这也适用于IE。 见https://basarat.gitbooks.io/typescript/content/docs/for...of.html

  

对于ES6之前的目标,TypeScript将为(var i = 0; i< list.length; i ++)类型的循环生成标准。

在简单的Javascript中,所以没有Typescript,IE(source

不支持

更新:与let相比,范围var更类似于C#。更新了示例。