जावास्क्रिप्ट में ऑब्जेक्ट की लंबाई: इसे कैसे प्राप्त करें और कोड को न तोड़ें

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

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

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

जावास्क्रिप्ट में ऑब्जेक्ट की लंबाई: कोई सरल .length क्यों नहीं है और क्या करें?

\n\n

क्या आपने कभी सोचा है: "अरे, ऐरे में .length प्रॉपर्टी क्यों होती है, लेकिन ऑब्जेक्ट में नहीं?" अगर हाँ — तो आप अकेले नहीं हैं। प्रश्न "Length of a JavaScript object" Stack Overflow पर हजारों व्यूज़ के साथ सबसे लोकप्रिय प्रश्नों में से एक है। और यह आश्चर्यजनक नहीं है: हर शुरुआती देर-सबेर obj.length लिखने की कोशिश करता है और undefined प्राप्त करता है।

\n\n

इस लेख में, हम समझेंगे कि ऐसा क्यों होता है, और सबसे महत्वपूर्ण बात — जावास्क्रिप्ट में ऑब्जेक्ट की लंबाई सही तरीके से कैसे गिनें। आप 4 कार्यशील तरीके सीखेंगे, समझेंगे कि कब किसका उपयोग करना है, और हमेशा के लिए ऑब्जेक्ट की लंबाई के भ्रम को भूल जाएंगे।

\n\n

ऑब्जेक्ट में length प्रॉपर्टी क्यों नहीं होती?

\n\n

इसका कारण ऑब्जेक्ट की प्रकृति है। ऐरे संख्यात्मक इंडेक्स वाला एक क्रमबद्ध संग्रह है। जावास्क्रिप्ट इंजन आसानी से कह सकता है: "ऐरे में 5 तत्व हैं।" जबकि ऑब्जेक्ट "कुंजी-मान" जोड़ियों का एक अक्रमबद्ध सेट है। सैद्धांतिक रूप से, आप एक प्रॉपर्टी जोड़ सकते हैं, हटा सकते हैं, फिर से जोड़ सकते हैं — और क्रम की गारंटी नहीं है (कम से कम पुराने स्पेसिफिकेशन में)।

\n\n

यही कारण है कि सरल ऑब्जेक्ट में बिल्ट-इन .length नहीं होता। लेकिन इसका मतलब यह नहीं है कि हम इसकी गणना नहीं कर सकते। आइए देखें कैसे।

\n\n

तरीका #1: Object.keys() — स्वर्ण मानक

\n\n

सबसे लोकप्रिय और अनुशंसित तरीका Object.keys() का उपयोग करना है। यह विधि ऑब्जेक्ट की अपनी (विरासत में न मिली) गणनीय प्रॉपर्टीज़ की एक ऐरे लौटाती है। और ऐरे में, जैसा कि हम जानते हैं, .length होता है।

\n\n
const user = {\n  name: 'अन्ना',\n  age: 28,\n  city: 'मॉस्को',\n  isAdmin: false\n};\n\nconst length = Object.keys(user).length;\nconsole.log(length); // 4
\n\n

यह बहुत सरल है! आप कुंजियों की एक ऐरे प्राप्त करते हैं, और फिर इसकी लंबाई लेते हैं। यह तरीका सभी आधुनिक ब्राउज़रों और Node.js में काम करता है।

\n\n

Object.keys() में क्या शामिल है?

\n\n

महत्वपूर्ण बिंदु: Object.keys() केवल अपनी और गणनीय प्रॉपर्टीज़ लौटाता है। इसका मतलब है कि:

\n
    \n
  • अपनी — प्रोटोटाइप के माध्यम से विरासत में न मिली। यदि आपने क्लास के माध्यम से ऑब्जेक्ट बनाया या प्रोटोटाइप में एक विधि जोड़ी, तो वह परिणाम में शामिल नहीं होगी।
  • \n
  • गणनीय — वे जिनका फ़्लैग enumerable true पर सेट है। डिफ़ॉल्ट रूप से, असाइनमेंट के माध्यम से बनाई गई सभी प्रॉपर्टीज़ गणनीय होती हैं। लेकिन यदि आपने Object.defineProperty() का उपयोग enumerable: false के साथ किया है, तो ऐसी प्रॉपर्टी को अनदेखा कर दिया जाएगा।
  • \n
\n\n

गैर-गणनीय प्रॉपर्टी का उदाहरण:

\n\n
const car = {\n  brand: 'Toyota',\n  model: 'Camry'\n};\n\nObject.defineProperty(car, 'vin', {\n  value: 'JT2BF22KX00000001',\n  enumerable: false\n});\n\nconsole.log(Object.keys(car).length); // 2 (vin शामिल नहीं है)
\n\n

तरीका #2: Object.values() और Object.entries()

\n\n

कभी-कभी आपको केवल कुंजियों की संख्या नहीं, बल्कि मानों या जोड़ियों की संख्या चाहिए। यहाँ आपकी मदद करेंगे दो जुड़वाँ भाई:

\n\n
    \n
  • Object.values(obj) — मानों की एक ऐरे लौटाता है
  • \n
  • Object.entries(obj) — [कुंजी, मान] की एक ऐरे लौटाता है
  • \n
\n\n

दोनों ऐरे लौटाते हैं, और इसलिए उनके पास .length है:

\n\n
const book = {\n  title: 'मास्टर और मार्गरीटा',\n  author: 'बुल्गाकोव',\n  year: 1966\n};\n\nconsole.log(Object.values(book).length); // 3\nconsole.log(Object.entries(book).length); // 3
\n\n

मूलतः, यह समान संख्या है, लेकिन Object.entries() अधिक डेटा देता है यदि आगे आपको कुंजियों और मानों दोनों की आवश्यकता हो।

\n\n

तरीका #3: for...in लूप (और जाल में कैसे न फँसें)

\n\n

क्लासिक, लेकिन कम सुविधाजनक तरीका — for...in लूप का उपयोग करना और मैन्युअल रूप से प्रॉपर्टीज़ गिनना:

\n\n
const person = {\n  name: 'इवान',\n  age: 30\n};\n\nlet count = 0;\nfor (let key in                

ब्लॉग

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