2015-06-28 5 views
11

Dies ist wahrscheinlich etwas wirklich dumm, aber ich verstehe nicht, warum das nicht funktioniert.Warum ist "forEach keine Funktion" für diese Karte?

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

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

Uncaught Typeerror: a.forEach ist keine Funktion

http://jsfiddle.net/ty7z6pse/

+4

'forEach' ist in' Array's 'Prototyp' definiert, nicht in' Object'. – thefourtheye

+1

Weil Objekte nicht 'forEach' haben, haben Arrays – adeneo

+1

Maps nicht diese Funktion? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach Ist 'var a = {};' keine Map erstellen? Warum wird ein Array mit '[]' konstruiert (da 'forEach' auf einer so erstellten Variablen funktioniert)? – haventchecked

Antwort

21

Objekt nicht forEach, es to Array prototype gehört. Wenn Sie jedes Schlüssel-Wert-Paar im Objekt durchlaufen und die Werte übernehmen möchten. Sie können dies tun:

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

Verwendungshinweis: Für ein Objekt v = {"cat":"large", "dog": "small", "bird": "tiny"};, Object.keys(v) gibt Ihnen eine Reihe von Tasten, so dass Sie [ "Katze", "Hund", "Vogel"]

erhalten
+0

Was meinst du @RGraham? –

+0

Ich werde diesen Ansatz verwenden, danke. – haventchecked

+0

Oh, habe es gerade bemerkt. Es war zu schnell, also habe ich es nicht bemerkt. Ja, besser auch Kommentar oder Vorschlag hinterlassen. –

Verwandte Themen