Number Conversion in JavaScript – JavaScript में मूल रूप से Number(), parseInt व parseFloat() नाम के तीन Functions हैं जो किसी Non-Numeric Value को Number में Convert करने के लिए Use किए जाते हैं। सामान्यत: इन Functions को Casting Function कहा जाता है।
Number() Function का प्रयोग किसी भी प्रकार के Data Type के साथ Use किया जा सकता है जबकि parseInt() व parseFloat() Functions का प्रयोग केवल किसी String को Number में Convert करने के लिए किया जाता है। ये तीनों ही Functions समान Input के लिए भी अलग-अलग तरह से व्यवहार करते हैं।
Number() Function निम्न नियमों के अनुसार Conversion करता है:
- जब इस Function में Boolean Values true या false को Pass किया जाता है, तब ये Function उन Boolean Values को क्रमश: 1 व 0 में Convert कर देता है।
- जब इस Function में Number Values को Pass किया जाता है, तब ये Function वही मान फिर से Return कर देता है।
- जब इस Function में null Pass किया जाता है, तब ये Function 0 Return करता है।
- जब इस Function में undefined Pass किया जाता है, तब ये Function NaN Return करता है।
- जब इस Function में null Pass किया जाता है, तब ये Function 0 Return करता है।
- जब इस Function में किसी object को Pass किया जाता है, तब ये Function सबसे पहले valueOf() Method Call करता है और Return होने वाली Values उपरोक्त नियमों के अनुसार Convert होकर Return होती है। जबकि यदि Conversion के बाद Return होने वाला Result NaN हो, तो toString() Method Call होता है और आगे दिए गए String नियमों के अनुसार Conversion होता है और Value Return होता है।
- जब इस Function में string Pass किया जाता है तब निम्न नियमों के अनुसार Conversion होता है:
- यदि String में केवल Numbers होते हैं, तो ये Function उस String के Numbers को Pure Decimal Numbers में Convert करता है। यानी यदि String में संख्या के साथ Leading Zeros हों, तो ये Function उन Leading Zeros को छोडकर शेष संख्या Return करता है। जैसे यदि String “123” हो तो Output में Number 123 Return होता है, यदि String “0123” हो तो भी Output में Number 123 Return होता है और Leading 0 हट जाता है।
- यदि String में Floating Point Value हो, तो वह Floating Point Value में Convert हो जाता है और यहां भी Leading Zero Remove हो जाता है। जैसे यदि String “123.45” हो तो Output में Number 123.45 Return होता है।
- यदि String में Hexadecimal Value हो, तो Value एक Matching Integer Value में Convert हो जाता है।
- यदि String Empty हो, तो Output में ये Function 0 Return करता है।
- यदि String में उपरोक्त में से किसी भी प्रकार का मान न हो, तो Output में ये Function NaN Return करता है।
यदि हम इन नियमों पर Applied कुछ उदाहरण देखें तो ये उदाहरण निम्नानुसार हो सकते हैं:
[code] var num1 = Number(“Hi!”); // Return Value : NaN var num2 = Number(“”); // Return Value : 0 var num3 = Number(“000053”); // Return Value : 53 var num4 = Number(true); // Return Value : 1 [/code]
उपरोक्त उदाहरणों में String “Hi!” इसलिए NaN Return कर रहा है क्योंकि इसमें कोई भी Numerical Value नहीं है जबकि 000053 केवल 53 ही Return कर रहा है क्योंकि Numerical Value में Leading Zeros का कोई महत्व नहीं होता।
ये Function काफी Complicated है, इसलिए सामान्यत: हम parseInt() व parseFloat() Functions को Use करके अपनी जरूरतों को पूरा करते हैं। parseInt() Function अपने Argument को इस बात के लिए Check करता है कि उसमें कोई Number Pattern है या नहीं।
इस Function द्वारा String में Specified सभी Leading White Spaces को Ignore कर दिया जाता है और Check किया जाता है कि बचे हुए Characters में पहला Character कोई Number है या नहीं।
यदि पहला Character कोई Number न हो, तो parseInt() Function हमेंशा NaN Return करता है। जबकि पहला Character Number होने की स्थिति में तब तक आगे के Characters को Number में Convert करता रहता है, जब तक कि उसे कोई Non-Digit Character न मिल जाए।
जैसे- “12345as12” String को parseInt() Function में Pass करने पर ये Function 12345 Numerical मान Return करता है। इसी तरह से यदि String के रूप में “12.23” भी हो, तब भी ये Function केवल 12 ही Return करता है, क्योंकि Dot को ये Function Digit का हिस्सा नहीं मानता और हमेंशा Integer Value ही Return करता है।
जब parseInt() Function को String में First Character के रूप में कोई Digit के स्थान पर कोई Character मिलता है, तब ये Function String को इस बात के लिए भी Check करता है कि कहीं हमने String में Value के रूप में Octal अथवा Hexadecimal मान तो Specify नहीं किया है।
यानी यदि String में पहला Character 0 हो तो ये Function String की Octal Value Return करता है जबकि पहला व दूसरा Character 0x हो, तो ये Function String की Hexadecimal Value Return करता है। जैसे-
[code] var num1 = parseInt(“1234blue”); // Returned Value : 1234 var num2 = parseInt(“”); // Returned Value : NaN var num3 = parseInt(“0xA”); // Returns: 10 - Decimal Equivalent Hexadecimal var num4 = parseInt(22.5); // Returned Value : 22 var num5 = parseInt(“070”); // Returned Value : 56 - Decimal Equivalent Octal var num6 = parseInt(“70”); // Returned Value : 70 - Decimal var num7 = parseInt(“0xf”); // Returns: 15 – Decimal Equivalent Hexadecimal [/code]
उपरोक्त उदाहरणों में हम देख सकते हैं कि parseInt() Function हमेंशा एक Decimal Integer मान ही Return करता है, भले ही उसमें Octal मान Specify करें, जिसके आगे Leading Zero हो या फिर Hexadecimal मान, जिसके आगे Leading 0x हो।
यदि हम किसी Hexadecimal Value के साथ 0x का प्रयोग न करें, तो ये Function उस Hexadecimal Value को Character मान लेगा। फलस्वरूप हमें गलत Number प्राप्त होगा अथवा कोई Number प्राप्त नहीं होगा। जैसे-
[code] var num = parseInt(“AE”); // Return Value: NaN [/code]
ऐसा Output इसलिए मिल रहा है क्योंकि “AE” तब तक केवल एक String है, जब तक कि इसके साथ 0x Specify न किया जाए। लेकिन parseInt() Function के साथ हम “radix” Specify करके JavaScript Interpreter को बता सकते हैं कि हमने जो String Specify किया है, उसे एक Hexadecimal Value की तरह Treat किया जाए और ऐसा करने के लिए हमें उपरोक्त Statement को निम्नानुसार लिखना होगा-
[code] var num = parseInt(“AE”, 16); // Return Value: 174 [/code]
चूंकि Hexadecimal में कुल 16 Digits होते हैं, इसलिए उपरोक्त Statement में हमने Radix के रूप में दूसरे Argument में 16 Specify किया है। Radix का प्रयोग करके हम एक ही Value को अलग-अलग तरीकों से Return करवा सकते हैं। जैसे-
[code] var num1 = parseInt(“10”, 2); // Return Value: 2 - parsed as Binary var num2 = parseInt(“10”, 8); // Return Value: 8 - parsed as Octal var num3 = parseInt(“10”, 10); // Return Value: 10 - parsed as Decimal var num4 = parseInt(“10”, 16); // Return Value: 16 - parsed as Hexadecimal [/code]
चारों Functions में हमने Value “10” ही Specify की है लेकिन Radix के कारण चारों Functions अलग-अलग Values Return कर रहे हैं। पहला Function 10 को Binary Value की तरह Treat करता है और Binary में 10 Decimal के 2 के बराबर होता है। इसी तरह से Octal में 10 Decimal के 8 के बराबर जबकि Hexadecimal का 10 Decimal के 16 के बराबर होता है।
यानी String के रूप में कोई भी संख्या Specify करते हुए हम उसका Radix Specify करके उस संख्या को Binary, Decimal, Octal या Hexadecimal किसी भी तरह की Value के रूप में इस Function द्वारा Return करवा सकते हैं।
parseFloat() Function ठीक parseInt() Function की तरह ही काम करता है। यानी String के पहले Character से Check करना शुरू करता है और तब तक Digits की Parsing करता रहता है जब तक कि उसे String का End या कोई Invalid Floating Point Number न मिल जाए।
इस Function के लिए 0 से 9 तक की Digit व Dot Valid Characters हैं हालांकि ये Function केवल एक ही बार Dot को Read करता है। यानी यदि हम “12.10.32” String Specify करें, तो ये Function केवल 12.10 ही Return करेगा। शेष String को Ignore कर देगा।
इस Function की दूसरी विशेषता ये है कि ये Function हमेंशा Leading 0 को Ignore करता है। यानी ये Function Hexadecimal Values के लिए हमेंशा 0 Return करता है, जबकि Decimal व Octal Values को एक ही समान मानता है। यानी ये Function केवल Decimal समझता है। Octal, Binary या Hexadecimal Values को ये Function नहीं समझता। जैसे-
[code] var num1 = parseFloat(“1234blue”); // Output: 1234 - integer var num2 = parseFloat(“0xA”); // Output: 0 var num3 = parseFloat(“22.5”); // Output: 22.5 var num4 = parseFloat(“22.34.5”); // Output: 22.34 var num5 = parseFloat(“0908.5”); // Output: 908.5 var num6 = parseFloat(“3.125e7”); // Output: 31250000 [/code]
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance JavaScript in Hindi | Page: 669 | Format: PDF