2016-06-29 18 views
27

Ich bin über die JavaScript-Fragen zu diesem Thema gegangen, diese Frage bezieht sich speziell auf Angular2 mit TypeScript.zwei Objektarrays mit Angular 2 und TypeScript zusammenführen?

Was ich versuche zu tun ist, die JSON-Objekte zu einem Array zu verketten.

Mein Code sieht ungefähr so ​​aus,

public results: []; 


public getResults(){ 
    this._service.get_search_results(this._slug, this._next).subscribe(
      data => { 
       this.results.concat(data.results); 
       this._next = data.next; 
      }, 
      err => { 
       console.log(err); 
      } 
     ); 
} 

Wie kann ich data.results-this.results mit Typoskript und Winkel verketten?

this._slug und this._next sind auf Klasse festgelegt.

danke.

Antwort

48

Ich denke, dass Sie eher die folgenden verwenden sollten:

data => { 
    this.results = this.results.concat(data.results); 
    this._next = data.next; 
}, 

Vom concatdoc:

Die concat() -Methode gibt ein neues Array des Arrays besteht, auf dem es aufgerufen wird verbunden mit dem/den Array (s) und/oder Wert (en), die als Argumente zur Verfügung gestellt werden.

+0

leider funktioniert das nicht mit Uint8arrays :( –

27

Der Spread-Operator ist ein bisschen cool.

this.results = [ ...this.results, ...data.results]; 

Der Spread Operator ermöglicht es Ihnen, eine erweiterte Version eines Arrays in ein anderes Array leicht zu platzieren.

You can read about spread operator here.

0

Sie können auch die Form von ES6 empfohlen wurden:

data => { 
    this.results = [ 
    ...this.results, 
    data.results, 
    ]; 
    this._next = data.next; 
}, 

Dies funktioniert, wenn Sie Ihre Array initialisieren erste (public results = [];); Ansonsten ersetzen Sie ...this.results, durch ...this.results ? this.results : [],.

Hoffe, das hilft

Verwandte Themen