TypeScript ऐरे में स्ट्रिंग की जाँच: अनुकूलन और गति

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

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

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

परिचय: "क्या मेरी स्ट्रिंग यहाँ है?" — डेवलपर का शाश्वत प्रश्न

\n

आप TypeScript में कोड लिख रहे हैं, और अचानक सवाल उठता है: "मैं कैसे जाँचूँ कि किसी ऐरे में कोई विशिष्ट स्ट्रिंग है या नहीं?" यह एक छोटी सी बात लगती है, लेकिन इस पर फ़िल्टर की कार्यक्षमता, फ़ॉर्म सत्यापन, सूचियों में खोज और सैकड़ों अन्य परिदृश्य निर्भर करते हैं। Stack Overflow पर इस प्रश्न ने हज़ारों बार देखा गया है — इसका मतलब है कि यह न केवल शुरुआती बल्कि अनुभवी डेवलपर्स को भी परेशान करता है।

\n

आज हम TypeScript में ऐरे में स्ट्रिंग की उपस्थिति की जाँच करने के सभी वैध तरीकों पर चर्चा करेंगे। लेकिन हम केवल विधियों को सूचीबद्ध नहीं करेंगे — हम प्रदर्शन के पीछे की बारीकियों को देखेंगे, जानेंगे कि कौन सा विकल्प तेज़ है, और कब उन्नत डेटा संरचनाओं का उपयोग करना चाहिए। आप सीखेंगे कि केवल काम करने वाला कोड नहीं, बल्कि तेज़ और सुरुचिपूर्ण कोड कैसे लिखें।

\n

चलिए शुरू करते हैं! 🚀

\n\n

includes() विधि: सरलता और पठनीयता

\n

सबसे स्पष्ट और आधुनिक तरीका includes() विधि है। यह ES2016 में आया और TypeScript द्वारा मूल रूप से समर्थित है। बस इसे ऐरे पर कॉल करें और खोजी जाने वाली स्ट्रिंग पास करें।

\n
const fruits: string[] = ['सेब', 'केला', 'संतरा', 'कीवी'];\nconst searchTerm: string = 'केला';\n\nif (fruits.includes(searchTerm)) {\n  console.log('फल मिल गया! 🍌');\n} else {\n  console.log('ऐसा कोई फल नहीं है।');\n}
\n

लाभ:

\n
    \n
  • अत्यधिक पठनीय कोड — तुरंत समझ में आता है कि क्या हो रहा है।
  • \n
  • boolean लौटाता है — शर्तों के लिए आदर्श।
  • \n
  • TypeScript की सख्त टाइपिंग का समर्थन करता है।
  • \n
\n

नुकसान:

\n
    \n
  • रैखिक खोज O(n) — बहुत बड़े ऐरे (दसियों हज़ार तत्वों) के लिए धीमा हो सकता है।
  • \n
  • NaN के साथ काम नहीं करता (लेकिन स्ट्रिंग के लिए यह दुर्लभ है)।
  • \n
\n

90% कार्यों के लिए includes() आपकी पसंद है। सरल, विश्वसनीय, तेज़।

\n\n

indexOf() विधि: पुरानी लेकिन परखी हुई

\n

includes() के आने से पहले, सभी indexOf() का उपयोग करते थे। यह तत्व का इंडेक्स लौटाता है, लेकिन यदि तत्व नहीं है तो -1 देता है। -1 पर जाँच करना एक क्लासिक बन गया है।

\n
const languages: string[] = ['JavaScript', 'TypeScript', 'Python', 'Go'];\nconst target: string = 'TypeScript';\n\nif (languages.indexOf(target) !== -1) {\n  console.log('भाषा मिल गई!');\n} else {\n  console.log('भाषा सूची में नहीं है।');\n}
\n

लाभ:

\n
    \n
  • सभी वातावरणों में काम करता है, यहाँ तक कि पुराने ब्राउज़रों में भी (यदि यह महत्वपूर्ण है)।
  • \n
  • आगे की कार्रवाई के लिए तत्व की स्थिति प्राप्त की जा सकती है।
  • \n
\n

नुकसान:

\n
    \n
  • कम पठनीय — -1 के बारे में याद रखना होगा।
  • \n
  • समान जटिलता O(n)।
  • \n
  • TypeScript अंतर्निहित तुलना पर आपत्ति कर सकता है; प्रकार स्पष्ट रूप से निर्दिष्ट करना बेहतर है।
  • \n
\n

सुझाव: यदि आपको इंडेक्स की आवश्यकता नहीं है, तो includes() का उपयोग करें। लेकिन indexOf() जानना उपयोगी है — यह लीगेसी कोड में मिलता है।

\n\n

find() विधि: जब केवल true/false से अधिक की आवश्यकता हो

\n

find() विधि शर्त को पूरा करने वाला पहला तत्व लौटाती है, या यदि कुछ नहीं मिलता है तो undefined लौटाती है। यह एक शक्तिशाली उपकरण है जब आप केवल एक स्ट्रिंग नहीं, बल्कि किसी विशिष्ट फ़ील्ड वाली वस्तु की तलाश कर रहे हों।

\n
interface User {\n  id: number;\n  name: string;\n}\n\nconst users: User[] = [\n  { id: 1, name: 'अन्ना' },\n  { id: 2, name: 'बोरिस' },\n  { id: 3, name: 'विक्टर' }\n];\n\nconst foundUser = users.find(user => user.name === 'बोरिस');\n\nif (foundUser) {\n  console.log(`उपयोगकर्ता मिला: ${foundUser.name}`);\n}
\n

सरल स्ट्रिंग ऐरे के लिए find() अतिरिक्त है, लेकिन यदि आपको स्वयं तत्व प्राप्त करने या जटिल शर्त की जाँच करने की आवश्यकता है — यह सबसे अच्छा विकल्प है।

\n

प्रदर्शन: यह भी O(n) है, लेकिन प्रत्येक पुनरावृत्ति पर कॉलबैक कॉल के कारण includes() से थोड़ा धीमा है।

\n\n

Set के साथ अनुकूलन: जब गति महत्वपूर्ण हो

\n

यदि आप उपस्थिति की जाँच कर रहे हैं

ब्लॉग

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