2015-09-24 23 views
5

Ho la forEach ciclo seguente su un oggetto JSON chiamato obj:JSON forEach ottenere chiave e il valore

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

Come posso farlo console.log sia key e value di ogni elemento all'interno dell'oggetto? Qualcosa del genere:

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

È possibile?

risposta

11

Usa indice notazione con la chiave.

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

provare qualcosa di simile:

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

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

Supponendo che obj è un oggetto di pre-costruito (e non una stringa JSON), è possibile raggiungere questo obiettivo con il seguente:

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

'hasOwnProperty' non è necessario perché' Object.keys' include già solo proprietà. ([MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)) –

+0

Doenst Object.keys() garantisce che solo le proprietà dall'oggetto stesso siano si accede? Quindi non c'è bisogno di hasOwnProperty? – fubbe

+0

Questo è molto vero, buona cattura. – duncanhall

0

Un altro modo semplice per farlo è quello di utilizzare il seguente sintassi per scorrere l'oggetto, mantenendo l'accesso al valore della chiave e:

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

così per la vostra:

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

In questo caso, è necessario utilizzare 'hasOwnProperty' _is_, poiché la costruzione for ... include proprietà ereditate tramite la catena del prototipo. –

Problemi correlati