2015-09-24 14 views
5

Mam następujący forEach pętli nad obiektu JSON nazywa obj:JSON forEach dostać klucz i wartość

Object.keys(obj).forEach(function(){ 
}); 

Jak mogę to zrobić console.log zarówno key i value każdego elementu wewnątrz obiektu? Coś takiego:

Object.keys(obj).forEach(function(k, v){ 
    console.log(k + ' - ' + v); 
}); 

Czy to możliwe?

Odpowiedz

11

notacja Zastosowanie indeksu z kluczem.

Object.keys(obj).forEach(function(k){ 
    console.log(k + ' - ' + obj[k]); 
}); 
0

spróbować czegoś takiego:

var prop; 
for(prop in obj) { 
    if(!obj.hasOwnProperty(prop)) continue; 

    console.log(prop + " - "+ obj[prop]); 
} 
3

Zakładając, że obj jest pre-zbudowane obiektu (a nie ciąg JSON), można osiągnąć to z następujących powodów:

Object.keys(obj).forEach(function(key){ 
    console.log(key + '=' + obj[key]); 
}); 
+0

'hasOwnProperty' nie jest konieczne, ponieważ' Object.keys' zawiera już tylko własne właściwości. ([MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)) –

+0

Doenst Object.keys() zapewnia, że ​​tylko właściwości z samego obiektu są dostępne? Więc nie ma potrzeby hasOwnProperty? – fubbe

+0

To jest bardzo prawdziwe, dobry połów. – duncanhall

0

Innym sposobem na to jest za pomocą następujących składnia iterację obiektu, zachowując dostęp do kluczy i wartości:

for(var key in object){ 
    console.log(key + ' - ' + object[key]) 
} 

więc dla Ciebie:

for(var key in obj){ 
    console.log(key + ' - ' + obj[key]) 
} 
+0

W tym przypadku użycie 'hasOwnProperty' _is_ jest konieczne, ponieważ konstrukcja for ... in obejmuje właściwości dziedziczone za pośrednictwem łańcucha prototypów. –

Powiązane problemy