web-dev-qa-db-fra.com

Comment définir le typeScript Map of pair value paire. où key est un nombre et value est un tableau d'objets

Dans mon application angular2, je souhaite créer une carte qui prend un nombre comme clé et renvoie un tableau d'objets. Je suis actuellement en train de mettre en œuvre de la manière suivante mais pas de chance. Comment dois-je l'implémenter ou dois-je utiliser une autre structure de données à cette fin? Je veux utiliser la carte parce que c'est peut-être rapide?

Déclaration

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

tilisation

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;

Je veux obtenir un tableau de 3 objets si j'utilise this.priceList.get(1);

36
usmanwalana

Tout d’abord, définissez un type ou une interface pour votre objet, cela rendra les choses beaucoup plus lisibles:

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

Vous avez utilisé n tuple de taille un au lieu de tableau, il devrait ressembler à ceci:

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

Alors maintenant, cela fonctionne bien:

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;

( code dans la cour de récréation )

61
Nitzan Tomer