web-dev-qa-db-ja.com

キーと値のペアのTypeScriptマップを定義する方法。ここで、キーは数値であり、値はオブジェクトの配列です

私のangular2アプリでは、数値をキーとしてオブジェクトの配列を返すマップを作成したいと思います。私は現在、次の方法で実装していますが、運はありません。この目的のためにどのように実装するか、他のデータ構造を使用する必要がありますか?多分速いので、地図を使いたいですか?

宣言

 private myarray : [{productId : number , price : number , discount : number}];

priceListMap : Map<number, [{productId : number , price : number , discount : number}]> 
= new Map<number, [{productId : number , price : number , discount : number}]>();

使用法

this.myarray.Push({productId : 1 , price : 100 , discount : 10});
this.myarray.Push({productId : 2 , price : 200 , discount : 20});
this.myarray.Push({productId : 3 , price : 300 , discount : 30});
this.priceListMap.set(1 , this.myarray);
this.myarray = null;

this.myarray.Push({productId : 1 , price : 400 , discount : 10});
this.myarray.Push({productId : 2 , price : 500 , discount : 20});
this.myarray.Push({productId : 3 , price : 600 , discount : 30});
this.priceListMap.set(2 , this.myarray);
this.myarray = null;

this.myarray.Push({productId : 1 , price : 700 , discount : 10});
this.myarray.Push({productId : 2 , price : 800 , discount : 20});
this.myarray.Push({productId : 3 , price : 900 , discount : 30});
this.priceListMap.set(3 , this.myarray);
this.myarray = null;

this.priceList.get(1);を使用する場合、3つのオブジェクトの配列を取得したい

36
usmanwalana

最初に、オブジェクトのタイプまたはインターフェースを定義します。これにより、物がより読みやすくなります。

type Product = { productId: number; price: number; discount: number };

配列ではなくサイズ1の タプル を使用しました。次のようになります。

let myarray: Product[];
let priceListMap : Map<number, Product[]> = new Map<number, Product[]>();

だから今、これはうまく動作します:

myarray.Push({productId : 1 , price : 100 , discount : 10});
myarray.Push({productId : 2 , price : 200 , discount : 20});
myarray.Push({productId : 3 , price : 300 , discount : 30});
priceListMap.set(1 , this.myarray);
myarray = null;

遊び場のコード

61
Nitzan Tomer