2015-06-28 22 views
11

शायद यह वास्तव में कुछ गूंगा है, लेकिन मुझे समझ में नहीं आता कि यह क्यों काम नहीं करता है।इस मानचित्र के लिए "कोई फ़ंक्शन नहीं है" क्यों है?

var a = {"cat":"large"}; 

a.forEach(function(value, key, map){ 
    console.log(value); 
}); 

Uncaught TypeError: a.forEach एक समारोह

http://jsfiddle.net/ty7z6pse/

+4

'forEach' को 'ऑरे' के 'प्रोटोटाइप' में परिभाषित किया गया है, न कि 'ऑब्जेक्ट' पर। – thefourtheye

+1

क्योंकि ऑब्जेक्ट्स के पास 'के लिए' नहीं है, सरणी – adeneo

+1

क्या मैप्स में यह फ़ंक्शन नहीं है? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach 'var a = {}; 'नक्शा नहीं बना रहा है? एक सरणी का निर्माण '[]' के साथ क्यों किया जाता है (चूंकि उस के लिए बनाए गए चर पर 'प्रत्येक के लिए' काम करता है)? – haventchecked

उत्तर

21

वस्तु forEach नहीं है, यह अंतर्गत आता है to Array prototype नहीं है। यदि आप ऑब्जेक्ट में प्रत्येक कुंजी-मूल्य जोड़ी के माध्यम से पुनरावृत्त करना चाहते हैं और मान लेना चाहते हैं। [ "पक्षी" "बिल्ली", "कुत्ता",] ताकि आप मिल Object.keys(v) आप चाबियों का एक सरणी देता है एक वस्तु v = {"cat":"large", "dog": "small", "bird": "tiny"}; के लिए,

: आप ऐसा कर सकते हैं:

Object.keys(a).forEach(function (key){ 
    console.log(a[key]); 
}); 

प्रयोग टिप्पणी

+0

स्पष्टीकरण के लिए धन्यवाद @RGraham का क्या मतलब है? –

+0

मैं इस दृष्टिकोण का उपयोग कर रहा हूं, धन्यवाद। – haventchecked

+0

ओह, बस इसे देखा। यह बहुत तेज़ था इसलिए मैंने ध्यान नहीं दिया। हां, बेहतर टिप्पणी या सुझाव छोड़ दें। –

संबंधित मुद्दे