2016-06-29 47 views
27

Ho incontrato le domande JavaScript su questo argomento, questa domanda riguarda specificamente Angular2 con TypeScript.unire due matrici di oggetti con Angular 2 e TypeScript?

Quello che sto cercando di fare è concatenare gli oggetti JSON a un array.

Il mio codice simile a questa,

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

Come posso concatenare data.results-this.results con dattiloscritto e angolare?

this._slug e this._next sono impostati sulla classe.

grazie.

risposta

48

Penso che si dovrebbe usare invece il seguente:

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

Dal concatdoc: metodo

Il concat() restituisce un nuovo array composto da matrice su cui è chiamata unito con l'array (s) e/o valore (s) fornito come argomenti.

+0

sfortunatamente, che non funziona con Uint8arrays :( –

27

L'operatore di distribuzione è un po 'freddo.

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

L'operatore diffusione consente di posizionare facilmente una versione ampliata di un array in un altro array.

You can read about spread operator here.

0

È inoltre possibile utilizzare il modulo consigliato da ES6:

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

questo funziona se si inizializza l'array prima (public results = [];); in caso contrario sostituire ...this.results, entro il ...this.results ? this.results : [],.

Spero che questo aiuti

Problemi correlati