यह आलेख उल्लिखित त्रुटि और उसके संभावित समाधानों को परिभाषित करेगा।
कैसे 'लेखन त्रुटि: object.forEach जावास्क्रिप्ट में एक कार्य नहीं है' घटित होता है?
जब कोई मान जो एक सरणी, मानचित्र या सेट नहीं है, का उपयोग किया जाता है, तो ' प्रत्येक के लिए() 'विधि जैसे' वस्तु 'और इतने पर,' लेखन त्रुटि: object.forEach JavaScript में कोई फ़ंक्शन नहीं है ' होता है। आइए बताए गए कारण का व्यावहारिक रूप से परीक्षण करें।
उदाहरण
दिए गए उदाहरण में, सबसे पहले, हम की-वैल्यू पेयर में इसके गुणों के साथ एक ऑब्जेक्ट बनाएंगे:
स्थिरांक वस्तु = {
नाम : 'स्टीफन' ,
अनुक्रमांक : ग्यारह ,
विषय : 'व्यापार'
} ;
फिर, इसके गुणों/प्रविष्टियों को कंसोल पर forEach() विधि का उपयोग करके प्रिंट करें:
वस्तु। प्रत्येक के लिए ( हे => {
सांत्वना देना। लॉग ( हे ) ;
} ) ;
जैसा कि आप आउटपुट में देख सकते हैं, एक एरर आई है क्योंकि forEach मेथड ऑब्जेक्ट्स के लिए लागू नहीं है:
निर्दिष्ट त्रुटि को कैसे ठीक करें?
उपरोक्त चर्चा की गई त्रुटि को हल करने के लिए, ऑब्जेक्ट के तरीकों का उपयोग करें जैसे ' वस्तु कुंजी () 'एक सरणी में कुंजियाँ प्राप्त करने के लिए,' ऑब्जेक्ट.वैल्यू () 'वस्तु का मान प्राप्त करने के लिए, या' ऑब्जेक्ट प्रविष्टियां () 'किसी वस्तु की सभी प्रविष्टियों को पुनः प्राप्त करने के लिए। इसके अलावा, ' ऐरे.फ्रॉम () ” विधि निर्दिष्ट वस्तु को वस्तुओं की एक सरणी में परिवर्तित करती है।
आइए इस मुद्दे को हल करने के लिए एक उदाहरण का प्रयास करें।
उदाहरण 1: ऑब्जेक्ट.एंट्री () विधि का उपयोग करके उल्लेखित त्रुटि को ठीक करें
इस उदाहरण में, हम 'का उपयोग करके किसी वस्तु की प्रविष्टियाँ प्राप्त करेंगे' ऑब्जेक्ट प्रविष्टियां () 'विधि के साथ' प्रत्येक के लिए() 'विधि जो की-वैल्यू जोड़े में ऑब्जेक्ट की प्रविष्टियों की एक सरणी लौटाती है:
वस्तु . प्रविष्टियों ( वस्तु ) . प्रत्येक के लिए ( में => {सांत्वना देना। लॉग ( में ) ;
} ) ;
यह कोई त्रुटि नहीं देगा, क्योंकि Object.entries () विधि मानों को एक सरणी में परिवर्तित करती है और प्रत्येक तत्व पर दिए गए फ़ंक्शन को निष्पादित करने के लिए forEach () विधि का उपयोग किया जाता है।
आउटपुट इंगित करता है कि forEach() विधि Object.entries() विधि का उपयोग करके ऑब्जेक्ट पर सफलतापूर्वक चलती है:
टिप्पणी: forEach मेथड को Object.keys() और Object.values() मेथड का उपयोग करके किसी ऑब्जेक्ट की की और वैल्यू प्राप्त करने के लिए भी लागू किया जाता है।
अब, देखते हैं कि यदि आप किसी वस्तु की कुंजियाँ, मान या प्रविष्टियाँ प्राप्त नहीं करना चाहते हैं, तो आप क्या करेंगे? दिया गया उदाहरण देखें!
उदाहरण 2: Array.from() विधि का उपयोग करके उल्लेखित त्रुटि को ठीक करें
इस त्रुटि को ठीक करने के लिए, वस्तु को वस्तुओं की एक सरणी में परिवर्तित करें और फिर 'का उपयोग करके उस पर forEach () विधि लागू करें' ऐरे.फ्रॉम () ' तरीका। यह बिना त्रुटि दिए किसी वस्तु के सभी गुणों को प्रिंट करेगा।
आइए पहले वस्तु को वस्तुओं की एक सरणी में परिवर्तित करें:
स्थिरांक वस्तु = [ {नाम : 'स्टीफन' ,
अनुक्रमांक : ग्यारह ,
विषय : 'व्यापार'
} ]
forEach() विधि को कॉल करें:
सरणी . से ( वस्तु ) . प्रत्येक के लिए ( पर => {सांत्वना देना। लॉग ( पर ) ;
} ) ;
उत्पादन
हमने निर्दिष्ट त्रुटि को ठीक करने के लिए सभी सर्वोत्तम संभव समाधानों को संकलित किया है।
निष्कर्ष
उल्लिखित त्रुटि तब होती है जब आप 'का उपयोग करने का प्रयास करते हैं प्रत्येक के लिए() ” किसी ऐसे मान पर विधि जो एक ऐरे, सेट या मैप नहीं है। इस त्रुटि को ठीक करने के लिए, 'का उपयोग करें' ऐरे.फ्रॉम () ”ऑब्जेक्ट को एक सरणी में बदलने की विधि और फिर उस पर forEach () विधि का उपयोग करें। इस आलेख में उल्लेखित त्रुटि की घटना और समाधान का वर्णन किया गया है।