javascript - Vad är skillnaden mellan dessa två arraytilldelningar i Typescript?


Jag arbetar på en Angular 4-applikation.

Jag hittade koden nedan i min applikation men kan inte hitta det exakta syftet med koden nedan.

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

Jag ändrade det till nedanstående kod, båda fungerar bra.

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

Kan någon hjälpa mig att förstå vad skillnaden är mellan de ovanstående två kodblocken.

Svar #1

Det finns inget annorlunda. Spread (...)-operatorn förstör arrayen och returnerar elementen ett och ett och sedan i [] placerar dem igen och skapar på så sätt en array. Vilket faktiskt är en extra operation.

Så this.auditList.filter(this.filterByRevisit) returnerar en array, och detta [...this.auditList.filter(this.filterByRevisit)] returnerar en array som sprids och återigen skapar en array.

Svar #2

Jag tror inte att det finns någon skillnad mellan de två. ... skulle skapa en ny array, filter gjorde det redan.

Men om jag tar titeln:

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