web-dev-qa-db-fra.com

fusionner deux tableaux d'objets avec Angular 2 et TypeScript?

J'ai parcouru les questions JavaScript sur ce sujet, cette question concerne spécifiquement Angular2 avec TypeScript.

Ce que j'essaie de faire est de concaténer les objets JSON à un tableau.

Mon code ressemble à quelque chose comme ça,

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

Comment concaténer data.results à this.results avec TypeScript et angular?

this._slug et this._next sont définis sur la classe.

merci.

66
Rivadiz

Je pense que vous devriez plutôt utiliser ce qui suit:

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

De la concatdoc :

La méthode concat () renvoie un nouveau tableau composé du tableau sur lequel elle est appelée jointe au (x) tableau (s) et/ou à la (aux) valeur (s) fournies en tant qu'arguments.

91
Thierry Templier

L'opérateur de propagation est un peu cool.

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

L'opérateur de propagation vous permet de placer facilement une version développée d'un tableau dans un autre tableau.

Vous pouvez lire sur l'opérateur de propagation ici.

110
Amsakanna

Avec angular 6 opérateur d'étalement et concat ne fonctionne pas. Vous pouvez le résoudre facilement:

result.Push(...data);
19
MooN

Vous pouvez également utiliser le formulaire recommandé par ES6:

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

Cela fonctionne si vous initialisez d'abord votre tableau (public results = [];); sinon remplacez ...this.results, par ...this.results ? this.results : [],.

J'espère que cela t'aides

4
Babak