जाँच कैसे करें कि JS ऐरे में कोई तत्व है या नहीं: गति गाइड

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

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

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

JavaScript ऐरे में कोई तत्व है या नहीं कैसे जाँचें? «बस काम करता है» से «उड़ता है» तक

\n\n

क्या आपने कभी कोड लिखा है और अचानक डेटा के एक ऐरे को देखकर ठिठक गए हैं? «क्या यहाँ वह है जो मुझे चाहिए?» — यह सवाल हर डेवलपर को परेशान करता है। Stack Overflow पर How do I check if an array includes a value in JavaScript विषय ने लाखों व्यूज़ जुटाए हैं। और यह सही भी है। मामूली लगने वाला यह कार्य न केवल कोड की पठनीयता बल्कि पूरे एप्लिकेशन की गति को भी प्रभावित करता है।

\n\n

आज हम JavaScript ऐरे में तत्व की उपस्थिति की जाँच के सभी तरीकों पर चर्चा करेंगे। हम केवल विधियाँ नहीं दिखाएँगे — हम एक वास्तविक प्रदर्शन जाँच करेंगे। आप जानेंगे कि includes() का उपयोग कब करें, indexOf() कभी-कभी तेज़ क्यों होता है, और Set आपके कोड को दस गुना तेज़ कैसे बना सकता है। चलिए शुरू करते हैं!

\n\n

क्लासिक तरीका: Array.prototype.includes()

\n\n

सबसे आधुनिक और पढ़ने योग्य तरीका है includes() विधि। यह ES2016 में आया और जल्दी ही डी-फैक्टो मानक बन गया। क्यों? क्योंकि इसका नाम ही अपने आप में सब कुछ कहता है।

\n\n
const fruits = ['apple', 'banana', 'mango', 'orange'];\nconst hasBanana = fruits.includes('banana');\nconsole.log(hasBanana); // true\n\nconst hasGrape = fruits.includes('grape');\nconsole.log(hasGrape); // false\n
\n\n

सब कुछ सरल और सुंदर है। includes() सख्त तुलना (===) का उपयोग करता है, इसलिए डेटा प्रकारों से सावधान रहें:

\n\n
const numbers = [1, 2, 3];\nconsole.log(numbers.includes('1')); // false — स्ट्रिंग संख्या के बराबर नहीं है\n
\n\n

लाभ:

\n
    \n
  • पठनीयता 10/10 — कोड एक नौसिखिए के लिए भी समझ में आता है
  • \n
  • NaN के साथ काम करता है (indexOf के विपरीत)
  • \n
  • सभी आधुनिक ब्राउज़रों द्वारा समर्थित
  • \n
\n\n

नुकसान:

\n
    \n
  • रैखिक जटिलता O(n) — पूरे ऐरे को पार करता है
  • \n
  • यदि तत्व का इंडेक्स खोजना हो तो उपयुक्त नहीं
  • \n
\n\n

पुराना अनुभवी: Array.prototype.indexOf()

\n\n

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

\n\n
const fruits = ['apple', 'banana', 'mango'];\nconst index = fruits.indexOf('banana');\nif (index !== -1) {\n  console.log('तत्व स्थिति पर पाया गया', index);\n} else {\n  console.log('तत्व नहीं मिला');\n}\n
\n\n

कई लोग इस जाँच के आदी हैं, और यह अभी भी काम करता है। लेकिन एक महत्वपूर्ण बारीकी है: indexOf() NaN को खोजने में असमर्थ है।

\n\n
const arr = [NaN];\nconsole.log(arr.indexOf(NaN)); // -1 — नहीं मिलता!\nconsole.log(arr.includes(NaN)); // true — मिल जाता है\n
\n\n

यह इसलिए है क्योंकि JavaScript में NaN !== NaN है, और indexOf सख्त तुलना का उपयोग करता है। जबकि includes() SameValueZero एल्गोरिदम का उपयोग करता है, जो NaN को सही ढंग से संभालता है।

\n\n

indexOf का उपयोग कब करें?

\n
    \n
  • यदि आपको तत्व का इंडेक्स चाहिए, न कि केवल उपस्थिति
  • \n
  • यदि आप सुनिश्चित हैं कि ऐरे में NaN नहीं है
  • \n
  • लेगसी कोड में जहाँ ES2016+ का उपयोग नहीं किया जा सकता
  • \n
\n\n

लचीला योद्धा: Array.prototype.find() और findIndex()

\n\n

जब केवल उपस्थिति नहीं बल्कि शर्त की जाँच करनी हो, तो find() मदद करता है। यह एक कॉलबैक फ़ंक्शन लेता है और शर्त को पूरा करने वाला पहला तत्व लौटाता है, या undefined लौटाता है।

\n\n
const users = [\n  { id: 1, name: 'Alice', age: 25 },\n  { id: 2, name: 'Bob', age: 30 },\n  { id: 3, name: 'Charlie', age: 35 }\n];\n\nconst user = users.find(u => u.age > 28);\nconsole.log(user); // { id: 2, name: 'Bob', age: 30 }\n\n// अस्तित्व की जाँच\nconst exists = users.find(u => u.id === 4) !== undefined;\nconsole.log(exists); // false                

ब्लॉग

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