объединить два массива объектов с помощью Angular 2 и TypeScript?

Я рассмотрел вопросы JavaScript по этой теме, этот вопрос специально посвящен Angular2 с TypeScript.

То, что я пытаюсь сделать, это объединить объекты json в массив.

Мой код выглядит примерно так:

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

Как я могу data.results this.results с машинописными и угловыми?

this._slug и this._next установлены в классе.

Благодарю.

Ответы

Ответ 1

Я думаю, что вы должны использовать скорее следующее:

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

Из документа concat:

Метод concat() возвращает новый массив, состоящий из массива, на который он называется, соединен с массивом (-ами) и/или значением (-ами), представленным в качестве аргументов.

Ответ 2

Оператор распространения является довольно прохладным.

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

Оператор распространения позволяет легко разместить расширенную версию массива в другой массив.

Здесь вы можете прочитать о распространителе.

Ответ 3

Вы также можете использовать форму, рекомендованную ES6:

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

Это работает, если вы сначала инициализируете свой массив (public results = [];); иначе замените ...this.results, by ...this.results? this.results: [], ...this.results? this.results: [],

Надеюсь это поможет