JavaScript में नंबरों में कॉमा कैसे जोड़ें? पूरी गाइड
\n\nक्या आपने कभी सोचा है कि 1000000 को पढ़ना मुश्किल क्यों लगता है, जबकि 1,000,000 तुरंत समझ में आ जाता है? इंसान की आंखें लंबी संख्याओं के लिए नहीं बनी हैं। थाउज़ेंड सेपरेटर (कॉमा, स्पेस या डॉट) सिर्फ सुंदरता के लिए नहीं, बल्कि उपयोगिता और जानकारी को समझने के लिए ज़रूरी हैं।
\n\nअगर आप JavaScript में काम करते हैं और कीमतों, आंकड़ों, ID या किसी भी संख्यात्मक डेटा के साथ काम करते हैं, तो देर-सबेर यह सवाल आएगा: "JavaScript में नंबर में कॉमा या स्पेस कैसे जोड़ें?"। Stack Overflow पर इस सवाल के हज़ारों व्यूज़ हैं — यानी यह कई डेवलपर्स को परेशान करता है।
\n\nइस लेख में हम सिर्फ तैयार कोड नहीं देंगे। हम तीन मुख्य तरीकों को समझाएंगे: आधुनिक built-in API से लेकर क्लासिक Regular Expressions तक। आप सीखेंगे कि JavaScript को पढ़ने योग्य संख्याओं की भाषा कैसे सिखाएं। चलिए शुरू करते हैं!
\n\nएक साधारण संख्या क्यों एक समस्या है?
\n\nसोचिए, आप अपनी वेबसाइट पर दिखा रहे हैं: कीमत: 1234567.89 रुपये। आंखें ठहर जाती हैं। यह कितना है? दस लाख? बारह लाख? अगर कॉमा लगा दें: 1,234,567.89 — तुरंत पता चलता है: यह दस लाख से थोड़ा ज़्यादा है।
JavaScript में Number सिर्फ एक Number है। इसका कोई "built-in" डिस्प्ले फॉर्मेट नहीं है। हम जो देखते हैं, वह स्ट्रिंग में बदलने का नतीजा है। और यहाँ हम डेवलपर्स की भूमिका आती है।
\n\nतरीका 1: toLocaleString() — सादगी का राजा
\n\nसबसे आसान और आधुनिक तरीका है toLocaleString() मेथड का उपयोग करना। यह हर JavaScript नंबर में होता है और यूज़र की लोकल के अनुसार फॉर्मेट करता है।
const number = 1234567.89;\nconst formatted = number.toLocaleString('hi-IN');\nconsole.log(formatted); // "12,34,567.89"\n\n\nध्यान दें: भारतीय लोकल (hi-IN) के लिए थाउज़ेंड सेपरेटर कॉमा है, और दशमलव सेपरेटर डॉट है। अमेरिकी लोकल (en-US) के लिए भी कॉमा और डॉट ही होता है, लेकिन ग्रुपिंग अलग होती है:
console.log(number.toLocaleString('en-US')); // "1,234,567.89"\n\n\nफायदे:
\n- \n
- बहुत कम कोड। \n
- लोकल स्टैंडर्ड को ध्यान में रखता है (कॉमा, स्पेस, डॉट)। \n
- सभी आधुनिक ब्राउज़र और Node.js में काम करता है। \n
नुकसान:
\n- \n
- फॉर्मेट पर कम नियंत्रण (बिना अतिरिक्त मैनिपुलेशन के स्पेस को कॉमा में नहीं बदल सकते)। \n
- पुराने ब्राउज़र (IE11) दूसरे आर्गुमेंट (locales) को सपोर्ट नहीं कर सकते। \n
तरीका 2: Intl.NumberFormat — लचीलापन और ताकत
\n\nअगर आपको पूरा नियंत्रण चाहिए, तो Intl.NumberFormat ऑब्जेक्ट का उपयोग करें। यह वही मैकेनिज़्म है जो toLocaleString() में है, लेकिन अतिरिक्त सेटिंग्स के साथ।
const formatter = new Intl.NumberFormat('hi-IN', {\n style: 'decimal',\n useGrouping: true, // थाउज़ेंड सेपरेटर चालू करता है\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n});\n\nconsole.log(formatter.format(1234567.8)); // "12,34,567.80"\n\n\nकरेंसी चाहिए? आसान है:
\n\nconst currencyFormatter = new Intl.NumberFormat('hi-IN', {\n style: 'currency',\n currency: 'INR',\n minimumFractionDigits: 0\n});\nconsole.log(currencyFormatter.format(1000000)); // "₹10,00,000"\n\n\nक्या मैन्युअली सेपरेटर बदल सकते हैं? कोई सीधा ऑप्शन नहीं है, लेकिन replace का उपयोग कर सकते हैं:
\n\nlet result = formatter.format(1234567.89);\nresult = result.replace(/,/g, ' '); // कॉमा को स्पेस से बदलें\nconsole.log(result); // "12 34 567.80"\n\n\nफायदे:
\n- \n
- अधिकतम लचीलापन (करेंसी, प्रतिशत, माप की इकाइयाँ)। \n
- परफॉरमेंस (एक बार बनाएं और बार-बार उपयोग करें)। \n
नुकसान:
\n- \n
- toLocaleString() से थोड़ा ज़्यादा कोड। \n
- फिर भी लोकल पर निर्भर करता है। \n