परिचय: यह क्यों महत्वपूर्ण है?
\n\nएक स्थिति की कल्पना करें: आप जावास्क्रिप्ट में एक टिप कैलकुलेटर लिख रहे हैं। उपयोगकर्ता इनपुट फ़ील्ड में बिल की राशि दर्ज करता है, बटन दबाता है — और उसे मिलता है... undefined या, इससे भी बुरा, संख्या 110 के बजाय स्ट्रिंग "10010"। परिचित लगता है? यदि आप अभी प्रोग्रामिंग में अपनी यात्रा शुरू कर रहे हैं, तो जावास्क्रिप्ट में स्ट्रिंग को संख्या में बदलने की समस्या उन "रैक" में से एक है, जिस पर बिल्कुल हर कोई कदम रखता है।
Stack Overflow पर प्रश्न "How can I convert a string to an integer in JavaScript?" ने हजारों बार देखा गया और सैकड़ों उत्तर प्राप्त किए। इसका मतलब है कि अनुभवी डेवलपर्स भी कभी-कभी बारीकियों में भ्रमित हो जाते हैं। आज हम एक बार और हमेशा के लिए समझ लेंगे कि जावास्क्रिप्ट में स्ट्रिंग को संख्या में सही तरीके से कैसे बदलें, कौन सी विधियाँ काम करती हैं और कौन सी नहीं, और परिणाम कभी-कभी अप्रत्याशित क्यों होता है।
\n\nतैयार हैं? तो चलिए शुरू करते हैं!
\n\nस्ट्रिंग को संख्या में बदलना क्यों आवश्यक है?
\n\nजावास्क्रिप्ट एक डायनामिक टाइपिंग वाली भाषा है। यह अच्छा है, क्योंकि आप डेटा प्रकारों के बारे में नहीं सोच सकते... जब तक कि आप किसी बग का सामना न करें। समस्या यह है कि prompt(), फॉर्म के input फ़ील्ड, URL पैरामीटर या API से डेटा हमेशा स्ट्रिंग के रूप में आता है। भले ही उपयोगकर्ता ने "42" दर्ज किया हो, जावास्क्रिप्ट इसे संख्या नहीं, बल्कि वर्णों का एक सेट मानता है।
दो स्ट्रिंग जोड़ने का प्रयास करें:
\n\nlet a = "10";\nlet b = "20";\nconsole.log(a + b); // "1020"\n\nदेखा? योग 30 के बजाय आपको संयोजन (concatenation) मिला। इससे बचने के लिए, आपको जावास्क्रिप्ट को स्पष्ट रूप से बताना होगा: "अरे, ये संख्याएँ हैं, इनके साथ संख्याओं की तरह काम करो!"
विधि #1: parseInt() — क्लासिक तरीका
\n\nजावास्क्रिप्ट में स्ट्रिंग को पूर्णांक संख्या में बदलने का सबसे लोकप्रिय तरीका parseInt() फ़ंक्शन है। यह एक स्ट्रिंग लेता है और उसमें से पूर्णांक संख्या "निकाल" लेता है, अंकों के बाद आने वाली हर चीज़ को अनदेखा करता है।
सिंटैक्स और उदाहरण
\n\nlet str = "42";\nlet num = parseInt(str);\nconsole.log(num); // 42 (संख्या)\n\n// अंकों के बाद "कचरा" होने पर भी काम करता है\nconsole.log(parseInt("123px")); // 123\nconsole.log(parseInt("10.99")); // 10 (दशमलव भाग को हटा देता है)\n\n// लेकिन अगर स्ट्रिंग अंक से शुरू नहीं होती...\nconsole.log(parseInt("abc123")); // NaN\nconsole.log(parseInt(" 7")); // 7 (शुरुआती रिक्त स्थान अनदेखा करता है)\n\nमहत्वपूर्ण: parseInt() पहले गैर-संख्यात्मक वर्ण पर रुक जाता है। यदि स्ट्रिंग अक्षर से शुरू होती है — तो आपको NaN (Not a Number) मिलेगा।
दूसरा तर्क — संख्या प्रणाली
\n\nकम लोग जानते हैं, लेकिन parseInt() का एक दूसरा पैरामीटर है — radix (संख्या प्रणाली का आधार)। यह अष्टाधारी संख्याओं के साथ बग से बचाता है:
// radix के बिना भ्रम हो सकता है\nconsole.log(parseInt("010")); // 10 (पुराने IE में यह 8 हो सकता था)\n\n// दशमलव प्रणाली के लिए हमेशा 10 निर्दिष्ट करें\nconsole.log(parseInt("010", 10)); // 10\nconsole.log(parseInt("FF", 16)); // 255 (हेक्साडेसिमल)\n\nपेशेवरों की सलाह: हमेशा दूसरा तर्क 10 पास करें, यदि आप दशमलव संख्याओं के साथ काम कर रहे हैं। यह कोड को स्पष्ट और सुरक्षित बनाता है।
विधि #2: Number() — सख्त, लेकिन ईमानदार
\n\nफ़ंक्शन Number() जावास्क्रिप्ट में स्ट्रिंग को संख्या में बदलने का एक अधिक सख्त तरीका है। parseInt() के विपरीत, यह किसी भी बाहरी वर्ण को बर्दाश्त नहीं करता है।
console.log(Number("42")); // 42\nconsole.log(Number("10.99")); // 10.99 (दशमलव भाग को बनाए रखता है)\nconsole.log(Number("123px")); // NaN (स्ट्रिंग में अतिरिक्त वर्ण हैं)\nconsole.log(Number("")); // 0 (खाली स्ट्रिंग = 0)\nconsole.log(Number(" ")); // 0\n\nकब उपयोग करें: यदि आप 100% सुनिश्चित हैं कि स्ट्रिंग में केवल एक संख्या है (उदाहरण के लिए, फॉर्म सत्यापन के बाद)। उपयोगकर्ता इनपुट के लिए parseInt() या