जावास्क्रिप्ट में ऑब्जेक्ट को कैसे पुनरावृत्त करें: शुरुआती से विशेषज्ञ तक
\n\nहर डेवलपर को कभी न कभी इस कार्य का सामना करना पड़ता है: "मैं किसी ऑब्जेक्ट के सभी गुणों पर कैसे जाऊं?" यह प्रश्न इतना लोकप्रिय है कि Stack Overflow पर इसने हज़ारों बार देखे जाने और सैकड़ों उत्तर प्राप्त किए हैं। और कोई आश्चर्य नहीं — जावास्क्रिप्ट में ऑब्जेक्ट सब कुछ का आधार हैं: कॉन्फ़िगरेशन से लेकर सर्वर से डेटा तक।
\n\nइस ट्यूटोरियल में हम जावास्क्रिप्ट में ऑब्जेक्ट को पुनरावृत्त करने के सभी मुख्य तरीकों पर चर्चा करेंगे, क्लासिक से लेकर आधुनिक तरीकों तक। आप जानेंगे कि for...in का उपयोग कब करें, Object.keys किस तरह बेहतर है, और Object.entries जीवन को कैसे सरल बनाता है। चलिए शुरू करते हैं!
तैयारी: एक परीक्षण ऑब्जेक्ट बनाना
\n\nउदाहरणों को स्पष्ट बनाने के लिए, एक सरल उपयोगकर्ता ऑब्जेक्ट लेते हैं:
\n\nconst user = {\n name: 'अन्ना',\n age: 28,\n city: 'मॉस्को',\n isAdmin: false\n};\n\nहमारा कार्य सभी कुंजियाँ और मान प्रदर्शित करना है। आइए देखें कि जावास्क्रिप्ट के शस्त्रागार में कौन से उपकरण हैं।
\n\n1. for...in लूप — क्लासिक तरीका
\n\nऑब्जेक्ट के गुणों को पुनरावृत्त करने का सबसे पुराना और बुनियादी तरीका। यह ES3 में ही आया था और सभी ब्राउज़रों में काम करता है।
\n\nfor (let key in user) {\n console.log(key + ': ' + user[key]);\n}\n// name: अन्ना\n// age: 28\n// city: मॉस्को\n// isAdmin: false\n\nएक महत्वपूर्ण बारीकी: for...in न केवल अपने गुणों को, बल्कि प्रोटोटाइप के माध्यम से विरासत में मिले गुणों को भी पुनरावृत्त करता है। उन्हें फ़िल्टर करने के लिए, hasOwnProperty का उपयोग करें:
for (let key in user) {\n if (user.hasOwnProperty(key)) {\n console.log(key + ': ' + user[key]);\n }\n}\n\nआधुनिक ऑब्जेक्ट में शायद ही कभी अतिरिक्त प्रोटोटाइप गुण होते हैं, लेकिन hasOwnProperty की जाँच करने की आदत लाइब्रेरीज़ के साथ काम करते समय बग से बचाएगी।
2. Object.keys() — आधुनिक दृष्टिकोण
\n\nObject.keys() विधि ऑब्जेक्ट की अपनी कुंजियों की एक सरणी लौटाती है। यह प्रोटोटाइप की समस्याओं से छुटकारा दिलाती है और सरणी के सभी तरीकों तक पहुँच प्रदान करती है।
const keys = Object.keys(user);\nconsole.log(keys); // ['name', 'age', 'city', 'isAdmin']\n\nkeys.forEach(key => {\n console.log(key + ': ' + user[key]);\n});\n\nलाभ:
\n- \n
- केवल अपने गुणों (गैर-विरासत) के साथ काम करता है \n
- एक सरणी लौटाता है —
forEach,map,filterका उपयोग किया जा सकता है \n - पढ़ने योग्य और अनुमानित कोड \n
जब मुझे केवल कुंजियों की सूची प्राप्त करनी हो और उनके साथ काम करना हो, तो यह मेरा पसंदीदा तरीका है।
\n\n3. Object.values() — जब केवल मानों की आवश्यकता हो
\n\nकभी-कभी हमें केवल गुणों के मानों में रुचि होती है, कुंजियों में नहीं। उदाहरण के लिए, डेटा को जोड़ने या प्रदर्शित करने के लिए।
\n\nconst values = Object.values(user);\nconsole.log(values); // ['अन्ना', 28, 'मॉस्को', false]\n\nvalues.forEach(value => {\n console.log(value);\n});\n\nयह विधि ES2017 में आई और डेटा संग्रह के साथ काम करने के लिए उपयुक्त है, जहाँ कुंजियाँ मायने नहीं रखतीं।
\n\n4. Object.entries() — विधियों में राजा
\n\nObject.entries() सरणियों की एक सरणी लौटाता है, जहाँ प्रत्येक नेस्टेड सरणी एक [कुंजी, मान] जोड़ी है। यह जावास्क्रिप्ट में ऑब्जेक्ट को पुनरावृत्त करने के लिए एक सार्वभौमिक उपकरण है।
const entries = Object.entries(user);\nconsole.log(entries);\n// [\n// ['name', 'अन्ना'],\n// ['age', 28],\n// ['city', 'मॉस्को'],\n// ['isAdmin', false]\n// ]\n\nentries.forEach(([key, value]) => {\n console.log(`${key}: ${value}`);\n});\n\nforEach के पैरामीटर में डिस्ट्रक्चरिंग पर ध्यान दें: ([key, value])। यह कोड को साफ और संक्षिप्त बनाता है।
कब उपयोग करें:
\n- \n
- कुंजियाँ और मान दोनों चाहिए \n
- ऑब्जेक्ट को किसी अन्य संरचना (जैसे Map) में बदलना चाहते हैं \n
- फंक्शनल कोड लिख रहे हैं