मैं एक शॉपिंगकार्ड पर काम कर रहा हूं।

private _card: Map<Product, number> = new Map<Product, number>();

...

addToCard(prod: Product, amount: number = 1): void {
    const a: number = this._card.get(prod) + amount; // The current amount + new Items
    console.log(this._card.get(prod) + ' + ' + amount);
    this._card.set(prod, a);
  }

लॉग:

card.service.ts:31 0 + 1
card.service.ts:31 01 + 1
card.service.ts:31 011 + 2
card.service.ts:31 0112 + 2
card.service.ts:31 01122 + 3
card.service.ts:31 011223 + 4

जाहिर है इसे एक सामान्य जोड़ करना चाहिए। मुझे नहीं पता कि ऐसा क्यों होता है, सभी वर्रों को संख्या के रूप में घोषित किया जाता है।

किसी भी मदद के लिए धन्यवाद।

-1
EKnot 3 फरवरी 2020, 17:38

3 जवाब

सबसे बढ़िया उत्तर

आप कार्ड के मूल्य को एक संख्या में त्वरित रूप से डाल सकते हैं और फिर राशि जोड़ सकते हैं

addToCard(prod: Product, amount: number = 1): void {
    const a: number = +this._card.get(prod) + +amount; // The current amount + new Items
    console.log(this._card.get(prod) + ' + ' + amount);
    this._card.set(prod, a);
}
0
Norbert Bartko 3 फरवरी 2020, 17:45

इसका कारण यह है।_card.get(cord) रिटर्न स्ट्रिंग, आप इसे बस नीचे में बदल सकते हैं

addToCard(prod: Product, amount: number = 1): void {
    const a: number = +this._card.get(prod) + amount; // The current amount + new Items
    console.log(this._card.get(prod) + ' + ' + amount);
    this._card.set(prod, a);
  }
0
Reza 3 फरवरी 2020, 17:44
const a:number = parseInt(this._card.get(prod), 10) + parseInt(amount, 10);

आप सख्त आधार 10 के साथ parse int में लपेटने का प्रयास कर सकते हैं।

आपको यह सुनिश्चित करने की अनुमति देगा कि दोनों संख्याएं हैं। एक और चीज जिसे आप आजमा सकते हैं वह है

 const a:number = this._card.get(prod) += amount;

मैं कहूंगा कि इन मानों में से एक, संभवतः प्रोड वैरिएबल को किसी कारण से एक स्ट्रिंग के रूप में एन्कोड किया जा रहा है जिसके परिणामस्वरूप जोड़ के बजाय संयोजन होता है।

0
Evan Burbidge 3 फरवरी 2020, 17:41