web-dev-qa-db-ja.com

2つのオブジェクト配列をAngular 2とTypeScriptで結合しますか?

私はこのトピックに関するJavaScriptの質問に遭遇しましたが、この質問は具体的にはTypeScriptによるAngular 2に関するものです。

私がやろうとしているのは、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);
            }
        );
}

TypeScriptとAngularでdata.resultsthis.resultsに連結するにはどうすればよいですか?

this._slugthis._nextはクラスに設定されています。

ありがとう。

61
Rivadiz

私はあなたがむしろ以下を使うべきだと思います:

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

concatから doc

Concat()メソッドは、それが呼び出された配列と、引数として指定された配列または値(あるいはその両方)との結合で構成される新しい配列を返します。

86

拡散演算子はちょっとかっこいいです。

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

スプレッド演算子を使用すると、配列の拡張バージョンを別の配列に簡単に配置できます。

あなたはここでスプレッド演算子について読むことができます。

97
Amsakanna

角度6の場合スプレッド演算子および連結は機能しません。簡単に解決できます。

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

ES6で推奨されている形式を使用することもできます。

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

あなたが最初にあなたの配列を初期化するならば、これは機能します(public results = [];)。そうでなければ...this.results,...this.results ? this.results : [],に置き換えてください。

お役に立てれば

4
Babak