角度7タイプスクリプトで2つの配列をマージする方法

サムジャナジョシ

特定のコンポーネントのAngular7プロジェクトでは、APIを介してwpサイトとdotnetサイトからデータを取得する必要があります。wp apiからデータを次のように取得しています(コンソールログデータ):

(2) [{…}, {…}]
0: {title: "Henk WJ Ovink", description: "Special Envoy for International Water Affairs, Kin…ands, and Sherpa to the High Level Panel on Water", slug: "http://siwidev.websearchpro.net/press/", image: "http://siwidev.websearchpro.net/wp-content/uploads/2019/03/636385501414087698.png", imageWidth: 1903, …}
1: {title: "Amina J. Mohammed", description: "Deputy Secretary-General United Nations", slug: "http://siwidev.websearchpro.net/community/", image: "http://siwidev.websearchpro.net/wp-content/uploads/2019/03/h20fddcc.jpg", imageWidth: 776, …}
length: 2
__proto__: Array(0)

dotnet apiからデータを(コンソールログデータ)として取得しています:

(5) [{…}, {…}, {…}, {…}, {…}]
0: {id: 8342, title: "Panaceas or painkillers – what role for sustainability assessment tools?", description: null, slug: "8342-panaceas-or-painkillers---what-role-for-sustainability-assessment-tools", image: "https://siwi.websearchpro.net/Content/ProposalReso…g-2019-8342-tn-img-2019-8605-iStock-500553193.jpg", …}
1: {id: 8380, title: "Inclusive Policy and Governance for Water and Sanitation ", description: null, slug: "8380-inclusive-policy-and-governance-for-water-and-sanitation", image: "https://siwi.websearchpro.net/Content/ProposalReso…019-8420-img-2019-8420-org-InkedPhoto IWRM_LI.jpg", …}
2: {id: 8464, title: "Cities4Forests: 50 cities commit to forests citing water benefits", description: null, slug: "8464-cities4forests-50-cities-commit-to-forests-citing-water-benefits", image: "https://siwi.websearchpro.net/Content/ProposalReso…464-tn-img-2019-8481-WESCA illegal FS dumping.jpg", …}
3: {id: 8474, title: "Urban water resiliency: a coordinated response from source to settlement ", description: null, slug: "8474-urban-water-resiliency-a-coordinated-response-from-source-to-settlement", image: "https://siwi.websearchpro.net/Content/ProposalResources/Image/Default/default-www-tn.jpg", …}
4: {id: 8526, title: "Including all: participatory approaches in water governance and programmes ", description: null, slug: "8526-including-all-participatory-approaches-in-water-governance-and-programmes", image: "https://siwi.websearchpro.net/Content/ProposalReso…ge/2019/Thumbnail/img-2019-8526-tn-Field trip.JPG", …}
length: 5
__proto__: Array(0)

次に、これら2つの配列をマージし、配列要素をシャッフルして表示する必要があります。私がこれまでにしたこと:

public merge_array : Array<{ }> = [];
/* wp api */
this.accountService.getKeynote( wp_params ).then( ( response: any ) => {
    this.merge_array ? this.merge_array : [];
    this.wp_data_array = response.data;
    for ( let value of this.wp_data_array ) {
        this.merge_array.push( value );
    };
});
/* dot net api */
this.accountService.getConferences( params ).then( ( dotnetresponse: any ) => {
    if ( dotnetresponse.status == 'Ok' ) {
        this.merge_array ? this.merge_array : [];
        this.dotnet_data_array = dotnetresponse.conferences;
        for ( let value of this.dotnet_data_array ) {
            this.merge_array.push( value );
        };
    }
});

しかし、ここでログ 'merge_array'をコンソールすると、結果は次のようになります。

[]
0: {title: "Henk WJ Ovink", description: "Special Envoy for International Water Affairs, Kin…ands, and Sherpa to the High Level Panel on Water", slug: "http://siwidev.websearchpro.net/press/", image: "http://siwidev.websearchpro.net/wp-content/uploads/2019/03/636385501414087698.png", imageWidth: 1903, …}
1: {title: "Amina J. Mohammed", description: "Deputy Secretary-General United Nations", slug: "http://siwidev.websearchpro.net/community/", image: "http://siwidev.websearchpro.net/wp-content/uploads/2019/03/h20fddcc.jpg", imageWidth: 776, …}
2: {id: 8342, title: "Panaceas or painkillers – what role for sustainability assessment tools?", description: null, slug: "8342-panaceas-or-painkillers---what-role-for-sustainability-assessment-tools", image: "https://siwi.websearchpro.net/Content/ProposalReso…g-2019-8342-tn-img-2019-8605-iStock-500553193.jpg", …}
3: {id: 8380, title: "Inclusive Policy and Governance for Water and Sanitation ", description: null, slug: "8380-inclusive-policy-and-governance-for-water-and-sanitation", image: "https://siwi.websearchpro.net/Content/ProposalReso…019-8420-img-2019-8420-org-InkedPhoto IWRM_LI.jpg", …}
4: {id: 8464, title: "Cities4Forests: 50 cities commit to forests citing water benefits", description: null, slug: "8464-cities4forests-50-cities-commit-to-forests-citing-water-benefits", image: "https://siwi.websearchpro.net/Content/ProposalReso…464-tn-img-2019-8481-WESCA illegal FS dumping.jpg", …}
5: {id: 8474, title: "Urban water resiliency: a coordinated response from source to settlement ", description: null, slug: "8474-urban-water-resiliency-a-coordinated-response-from-source-to-settlement", image: "https://siwi.websearchpro.net/Content/ProposalResources/Image/Default/default-www-tn.jpg", …}
6: {id: 8526, title: "Including all: participatory approaches in water governance and programmes ", description: null, slug: "8526-including-all-participatory-approaches-in-water-governance-and-programmes", image: "https://siwi.websearchpro.net/Content/ProposalReso…ge/2019/Thumbnail/img-2019-8526-tn-Field trip.JPG", …}
length: 7
__proto__: Array(0)

マージ配列の長さは0になります。これを解決することはできません。配列の初期化または配列のプッシュに関して何が間違っていますか。どんな助け/提案も歓迎します。

ゴジュン

Promisesの戻りは非同期で動作するため、配列が空になるのは当然のことです。したがって、値をログに記録した時点では、両方の配列は空になります。

あなたがする必要があるのはPromise.allを使うことですドキュメントによると、

Promise.all()メソッドは、イテラブルとして渡されたすべてのプロミスが解決されたとき、またはイテラブルにプロミスが含まれていないときに解決される単一のPromiseを返します。それは拒否する最初の約束の理由で拒否します。

ここでできることは、Promise.allを使用して両方の要求からのpromiseを解決し(promiseconsole.log(response)が実際に解決され、値が返されることを確認するために使用できます)、次にspread構文を使用して両方の配列をマージすることです。次に、ここでLaurens Holstが提供するアルゴリズムを使用して、配列をランダムに再シャッフルしますこれにより、結果のシャッフルされた配列が得られます。

const getKeynote = this.accountService.getKeynote(wp_params);
const getConferences = this.accountService.getConferences(params);

Promise.all([getKeynote, getConferences]).then(response => {
  //console.log(response);
  const merged = [...response[0], ...response[1]];
  const shuffleArray = (array) => {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];
    }
  };
  shuffleArray(merged);
  console.log(merged);
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

マングースを使用して集約クエリプロジェクトでオブジェクトの配列をカスタマイズする方法

分類Dev

タイプスクリプトの配列を値でソートする方法

分類Dev

PythonNumpyで2つの配列からインジケーターマトリックスを作成する

分類Dev

イベントの配列を使用して、GoogleタグマネージャーでカスタムHTMLタグをスクリプト化する方法

分類Dev

方法-Photoshopスクリプト-2つのレイヤーをマージする

分類Dev

C#で2つのカスタムタイプリストをマージする方法

分類Dev

リストビューで複数のオブジェクトタイプを持つ配列リストに文字列の2つの配列を配置するにはどうすればよいですか?

分類Dev

インデックス順に2つの配列リストを1つの配列リストにマージする方法

分類Dev

Javaスクリプトで2つの配列を比較する

分類Dev

2つのタイプの配列リスト:最初のタイプを決定する方法は?

分類Dev

2つの異なるタイプのストリームRDDをマージする方法

分類Dev

データフレームを配列のタイムスタンプとマージし、配列の条件でプロットする方法は?

分類Dev

ajaxリクエストページのワードプレスで配列データを受信する方法

分類Dev

オブジェクトのリストタイプを作成するために2つの文字列タイプリストを結合する方法

分類Dev

タイプスクリプトで2つの数値を合計する方法

分類Dev

タプルの2つの配列をマージする

分類Dev

2つのマットでオブジェクトの配列を取得する方法-角度4で選択

分類Dev

* ngForによって角度2タイプスクリプトフロントエンドでjson配列を表示する方法

分類Dev

Javaで配列タイプのリストをソートする方法は?

分類Dev

PHPループ内で2つの配列をマージする方法

分類Dev

Lambdaを使用してJavaで異なるタイプ(文字列と整数)の2つのソートされたリストをマージする

分類Dev

マングースで2つの要素を持つオブジェクトの配列を検索する方法

分類Dev

角度2タイプスクリプトでファイルをダウンロードする方法

分類Dev

タイプファクターの2つの列をマージする

分類Dev

1つのプレイストアプロジェクトで2つの異なるフレーバーアプリをアップロードする方法

分類Dev

ネストされたforループを回避するオブジェクトの2つの配列間でフィルタリング

分類Dev

2つの配列リストを昇順で1つにマージする方法

分類Dev

2つのオブジェクト配列で同じキーを持つプロパティをマージする方法は?

分類Dev

マップの2つのリストをいくつかの計算でマージするGroovyの方法

Related 関連記事

  1. 1

    マングースを使用して集約クエリプロジェクトでオブジェクトの配列をカスタマイズする方法

  2. 2

    タイプスクリプトの配列を値でソートする方法

  3. 3

    PythonNumpyで2つの配列からインジケーターマトリックスを作成する

  4. 4

    イベントの配列を使用して、GoogleタグマネージャーでカスタムHTMLタグをスクリプト化する方法

  5. 5

    方法-Photoshopスクリプト-2つのレイヤーをマージする

  6. 6

    C#で2つのカスタムタイプリストをマージする方法

  7. 7

    リストビューで複数のオブジェクトタイプを持つ配列リストに文字列の2つの配列を配置するにはどうすればよいですか?

  8. 8

    インデックス順に2つの配列リストを1つの配列リストにマージする方法

  9. 9

    Javaスクリプトで2つの配列を比較する

  10. 10

    2つのタイプの配列リスト:最初のタイプを決定する方法は?

  11. 11

    2つの異なるタイプのストリームRDDをマージする方法

  12. 12

    データフレームを配列のタイムスタンプとマージし、配列の条件でプロットする方法は?

  13. 13

    ajaxリクエストページのワードプレスで配列データを受信する方法

  14. 14

    オブジェクトのリストタイプを作成するために2つの文字列タイプリストを結合する方法

  15. 15

    タイプスクリプトで2つの数値を合計する方法

  16. 16

    タプルの2つの配列をマージする

  17. 17

    2つのマットでオブジェクトの配列を取得する方法-角度4で選択

  18. 18

    * ngForによって角度2タイプスクリプトフロントエンドでjson配列を表示する方法

  19. 19

    Javaで配列タイプのリストをソートする方法は?

  20. 20

    PHPループ内で2つの配列をマージする方法

  21. 21

    Lambdaを使用してJavaで異なるタイプ(文字列と整数)の2つのソートされたリストをマージする

  22. 22

    マングースで2つの要素を持つオブジェクトの配列を検索する方法

  23. 23

    角度2タイプスクリプトでファイルをダウンロードする方法

  24. 24

    タイプファクターの2つの列をマージする

  25. 25

    1つのプレイストアプロジェクトで2つの異なるフレーバーアプリをアップロードする方法

  26. 26

    ネストされたforループを回避するオブジェクトの2つの配列間でフィルタリング

  27. 27

    2つの配列リストを昇順で1つにマージする方法

  28. 28

    2つのオブジェクト配列で同じキーを持つプロパティをマージする方法は?

  29. 29

    マップの2つのリストをいくつかの計算でマージするGroovyの方法

ホットタグ

アーカイブ