JavaScript में स्ट्रिंग को बूलियन मान में बदलना: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: क्यों "true", true के बराबर नहीं है?

\n\n

एक स्थिति की कल्पना करें: आप एक ऑनलाइन स्टोर के लिए फ्रंटएंड लिख रहे हैं। उपयोगकर्ता "ईमेल द्वारा सूचनाएं प्राप्त करें" विकल्प चुनता है, और आपका कोड इसे localStorage में स्ट्रिंग "true" के रूप में सेव करता है। अगली बार जब वह आता है, तो आप इस स्ट्रिंग को पढ़ते हैं और शर्त की जाँच करने का प्रयास करते हैं:

\n\n
let userPref = localStorage.getItem('notifications');\nif (userPref) {\n    // सूचनाएं चालू करें\n}\n
\n\n

और यहाँ एक आश्चर्य है — शर्त हमेशा सत्य होती है! भले ही localStorage में स्ट्रिंग "false" हो, JavaScript इसे truthy (सत्य) मान मानता है। ऐसा इसलिए नहीं है क्योंकि आपने कुछ गलत किया है, बल्कि इसलिए क्योंकि JS में कोई भी गैर-रिक्त स्ट्रिंग true होती है।

\n\n

यह समस्या इतनी लोकप्रिय है कि Stack Overflow पर इस प्रश्न को हजारों बार देखा गया है और दर्जनों समाधान प्रस्तावित किए गए हैं। आज हम एक बार और हमेशा के लिए समझेंगे कि JavaScript में स्ट्रिंग को boolean में सही तरीके से कैसे बदलें, 5 कार्यशील तरीकों पर विचार करेंगे और उनमें से सर्वश्रेष्ठ की पहचान करेंगे।

\n\n

क्यों केवल if() का उपयोग नहीं कर सकते?

\n\n

आइए इस प्रश्न को तुरंत स्पष्ट करें। कई शुरुआती सोचते हैं: "अगर मैं if(str) लिखूंगा, तो स्ट्रिंग "false" false में बदल जाएगी।" यह एक खतरनाक गलतफहमी है।

\n\n

JavaScript में falsy (असत्य) मानों की अवधारणा है। उनमें से कुल 6 हैं:

\n
    \n
  • false
  • \n
  • 0 (शून्य)
  • \n
  • "" (रिक्त स्ट्रिंग)
  • \n
  • null
  • \n
  • undefined
  • \n
  • NaN
  • \n
\n\n

बाकी सब कुछ truthy है। स्ट्रिंग "false" रिक्त नहीं है, इसमें 5 वर्ण हैं। इसलिए, यह truthy है। यही बात "0", "null" और यहां तक कि "undefined" पर भी लागू होती है। if() या Boolean() के माध्यम से सरल रूपांतरण स्ट्रिंग के लिए काम नहीं करेगा।

\n\n

स्ट्रिंग को boolean में बदलने के शीर्ष 5 तरीके

\n\n

हमने Stack Overflow चर्चाओं और वास्तविक परियोजनाओं से सभी लोकप्रिय तरीकों का परीक्षण किया है। ये रहे वे, सबसे खराब से सर्वश्रेष्ठ तक।

\n\n

तरीका 1: टर्नरी ऑपरेटर (सबसे स्पष्ट, लेकिन भारी)

\n\n
function stringToBoolean(str) {\n    return str === 'true' ? true : str === 'false' ? false : null;\n}\n\nconsole.log(stringToBoolean('true'));  // true\nconsole.log(stringToBoolean('false')); // false\nconsole.log(stringToBoolean('yes'));   // null\n
\n\n

लाभ: शुरुआती लोगों के लिए समझने में आसान।
\nनुकसान: यदि "yes", "1", "on" को संभालना हो तो कोड बढ़ जाता है। शर्तों की एक श्रृंखला लिखनी होगी।

\n\n

तरीका 2: JSON.parse() (सुरुचिपूर्ण, लेकिन सख्त)

\n\n
function stringToBoolean(str) {\n    try {\n        return JSON.parse(str);\n    } catch (e) {\n        return null;\n    }\n}\n\nconsole.log(stringToBoolean('true'));  // true\nconsole.log(stringToBoolean('false')); // false\nconsole.log(stringToBoolean('TRUE'));  // त्रुटि! null लौटाएगा\n
\n\n

विधि JSON.parse() स्ट्रिंग "true" और "false" को बूलियन मानों में पार्स कर सकती है। लेकिन एक बारीकी है: यह केस-सेंसिटिव है। "True" या "TRUE" त्रुटि उत्पन्न करेगा। हालांकि, JSON.parse("null") null लौटाएगा, false नहीं — यह उपयोगी हो सकता है।

\n\n

तरीका 3: रेगुलर एक्सप्रेशन (लचीला, लेकिन धीमा)

\n\n
function stringToBoolean(str) {\n    if (typeof str !== 'string') return null;\n    return /^(true|yes|1|on)$/i.test(str.trim());\n}\n\nconsole.log(stringToBoolean('true'));  // true\nconsole.log(stringToBoolean('YES'));   // true\nconsole.log(stringToBoolean('off'));   // false\nconsole.log(stringToBoolean('0'));     // false\n
\n\n

यहां हम फ्लैग i (केस-इनसेंसिटिव) का उपयोग करते हैं और "सत्य" के कई वेरिएंट को संभालते हैं: true, yes, 1,

ब्लॉग

पुस्तक अनुशंसाएँ