объединить два массива объектов с помощью 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: [],
Надеюсь это поможет