2015-06-28 23 views
11

Bu, muhtemelen çok aptalca bir şeydir, ama bunun neden işe yaramadığını anlamıyorum.Bu harita neden "forEach işlevi değil"?

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

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

Yakalanmayan TypeError: a.forEach

http://jsfiddle.net/ty7z6pse/

+4

'for forEach',' Object' üzerinde değil, Array'ın 'prototype'ında tanımlanır. – thefourtheye

+1

Nesneler 'forEach' içermediğinden, diziler – adeneo

+1

yaparlar. Haritalar bu işlevi görmüyor mu? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach 'var a = {};' Harita oluşturmuyor mu? Neden bir dizi '[]' ile inşa edilir ('forEach' bu şekilde oluşturulan bir değişken üzerinde çalıştığı için)? – haventchecked

cevap

21

Nesne forEach yok, bu to Array prototype ait olan bir işlev değildir. Nesnedeki her bir anahtar/değer çifti üzerinden yinelemek ve değerleri almak istiyorsanız. Bunu yapabilirsiniz:

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

Kullanım notu: Bir nesnenin v = {"cat":"large", "dog": "small", "bird": "tiny"}; için, olsun böylece Object.keys(v) size tuşları bir dizi verir [ "kedi", "köpek", "kuş"]

+0

Ne demek @RGraham? –

+0

Bu yaklaşımı kullanacağım, teşekkürler. – haventchecked

+0

Oh, sadece fark ettim. Çok hızlıydı, ben de fark etmedim. Evet, daha iyi yorum veya öneri bırakın. –