परिचय: क्यों "true", true के बराबर नहीं है?
\n\nएक स्थिति की कल्पना करें: आप एक ऑनलाइन स्टोर के लिए फ्रंटएंड लिख रहे हैं। उपयोगकर्ता "ईमेल द्वारा सूचनाएं प्राप्त करें" विकल्प चुनता है, और आपका कोड इसे localStorage में स्ट्रिंग "true" के रूप में सेव करता है। अगली बार जब वह आता है, तो आप इस स्ट्रिंग को पढ़ते हैं और शर्त की जाँच करने का प्रयास करते हैं:
let userPref = localStorage.getItem('notifications');\nif (userPref) {\n // सूचनाएं चालू करें\n}\n\n\nऔर यहाँ एक आश्चर्य है — शर्त हमेशा सत्य होती है! भले ही localStorage में स्ट्रिंग "false" हो, JavaScript इसे truthy (सत्य) मान मानता है। ऐसा इसलिए नहीं है क्योंकि आपने कुछ गलत किया है, बल्कि इसलिए क्योंकि JS में कोई भी गैर-रिक्त स्ट्रिंग true होती है।
यह समस्या इतनी लोकप्रिय है कि Stack Overflow पर इस प्रश्न को हजारों बार देखा गया है और दर्जनों समाधान प्रस्तावित किए गए हैं। आज हम एक बार और हमेशा के लिए समझेंगे कि JavaScript में स्ट्रिंग को boolean में सही तरीके से कैसे बदलें, 5 कार्यशील तरीकों पर विचार करेंगे और उनमें से सर्वश्रेष्ठ की पहचान करेंगे।
\n\nक्यों केवल if() का उपयोग नहीं कर सकते?
\n\nआइए इस प्रश्न को तुरंत स्पष्ट करें। कई शुरुआती सोचते हैं: "अगर मैं if(str) लिखूंगा, तो स्ट्रिंग "false" false में बदल जाएगी।" यह एक खतरनाक गलतफहमी है।
JavaScript में falsy (असत्य) मानों की अवधारणा है। उनमें से कुल 6 हैं:
\n- \n
false\n 0(शून्य) \n ""(रिक्त स्ट्रिंग) \n null\n undefined\n NaN\n
बाकी सब कुछ truthy है। स्ट्रिंग "false" रिक्त नहीं है, इसमें 5 वर्ण हैं। इसलिए, यह truthy है। यही बात "0", "null" और यहां तक कि "undefined" पर भी लागू होती है। if() या Boolean() के माध्यम से सरल रूपांतरण स्ट्रिंग के लिए काम नहीं करेगा।
स्ट्रिंग को boolean में बदलने के शीर्ष 5 तरीके
\n\nहमने Stack Overflow चर्चाओं और वास्तविक परियोजनाओं से सभी लोकप्रिय तरीकों का परीक्षण किया है। ये रहे वे, सबसे खराब से सर्वश्रेष्ठ तक।
\n\nतरीका 1: टर्नरी ऑपरेटर (सबसे स्पष्ट, लेकिन भारी)
\n\nfunction 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" को संभालना हो तो कोड बढ़ जाता है। शर्तों की एक श्रृंखला लिखनी होगी।
तरीका 2: JSON.parse() (सुरुचिपूर्ण, लेकिन सख्त)
\n\nfunction 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 नहीं — यह उपयोगी हो सकता है।
तरीका 3: रेगुलर एक्सप्रेशन (लचीला, लेकिन धीमा)
\n\nfunction 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,