2015-09-24 3 views
5

У меня есть следующие forEach перебирает объект JSON называется obj:JSON Foreach получить ключ и значение

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

Как я могу сделать это console.log как key и value каждый элемент внутри объекта? Что-то вроде этого:

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

Возможно ли это?

ответ

11

Использование индекса обозначения с помощью ключа.

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

попробовать что-то вроде этого:

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

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

Предполагая, что obj представляет собой предварительно созданный объект (а не строка JSON), вы можете добиться этого со следующим:

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

'hasOwnProperty' не требуется, поскольку' Object.keys' уже включает только собственные свойства. ([MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)) –

+0

Doenst Object.keys() гарантирует, что только свойства из самого объекта доступ? Так что нет необходимости в hasOwnProperty? – fubbe

+0

Это очень верно, хороший улов. – duncanhall

0

Еще один простой способ сделать это с помощью следующих синтаксис перебирать объекта, сохраняя доступ к ключу и значению:

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

так для твоего:

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

В этом случае необходимо использовать 'hasOwnProperty' _is_, потому что for ... in construction включает свойства, унаследованные через цепочку прототипов. –

Смежные вопросы