58 votes

Comment définir le mappage Typescript d'une paire de valeurs clés. où clé est un nombre et la valeur est un tableau d'objets

Dans mon application angular2, je veux créer une carte qui prend un nombre comme clé et renvoie un tableau d'objets. J'implémente actuellement 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 à cet effet? Je veux utiliser la carte car peut-être que c'est 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}]>();
 

Usage

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

94voto

Nitzan Tomer Points 11798

Première chose, définir un type ou de l'interface de votre objet, il va rendre les choses beaucoup plus lisible:

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

Vous avez utilisé un tuple de taille à la place de tableau, il devrait ressembler à ceci:

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

Alors maintenant, cela fonctionne très 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 de l'aire de jeux)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X