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);
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;