在Typescript中这两个数组赋值有什么区别?

时间:2017-08-30 08:10:27

标签: javascript angular typescript ecmascript-6

我正在开发Angular 4应用程序。

我在我的应用程序中找到了以下代码,但无法找到以下代码的确切用途。

getManagementView(groupField: string) {        
    this.auditList = [...this.auditList.filter(this.filterByRevisit)];
  }

我将其更改为以下代码,两者都正常工作。

getManagementView(groupField: string) {        
    this.auditList = this.auditList.filter(this.filterByRevisit);
  }

任何人都可以帮助我理解上面两个代码块的区别。

2 个答案:

答案 0 :(得分:5)

有不同之处。 spread (...)运算符会销毁数组并逐个返回元素,然后在[]中再次生成数组。这实际上是额外的操作。

所以this.auditList.filter(this.filterByRevisit)返回一个数组, 并且这个[...this.auditList.filter(this.filterByRevisit)]返回一个扩展的数组,并再次生成一个数组。

答案 1 :(得分:4)

我认为这两者之间没有区别。 ...会创建一个新数组,filter已经完成了。

但如果我拿标题:

this.array = this.array      // does nothing, same object
this.array = [...this.array] // creates a new array, though the same content