JSON forEach获取键和值

50

我有以下对名为obj的JSON对象进行forEach循环的代码:

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

我该如何使console.log输出对象内每项的keyvalue

类似于这样:

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

98

使用带有键的索引表示法。

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

25

使用箭头函数循环遍历对象

ES6

Object.keys(myObj).forEach(key => {
    console.log(key + ' - ' + myObj[key]) // key - value
})

ES7

Object.entries(myObj).forEach(([key, value]) => {
    console.log(key + ' - ' + value) // key - value
})

2
如果你使用的是ES7+,那么Object.entries是最好的答案。谢谢! - BoB3K

7

另一个简单的方法是使用以下语法遍历对象,保留对键和值的访问:

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

所以针对你的问题:
for(var key in obj){
  console.log(key + ' - ' + obj[key])
}

3
еңЁиҝҷз§Қжғ…еҶөдёӢпјҢдҪҝз”ЁhasOwnPropertyжҳҜеҝ…иҰҒзҡ„пјҢеӣ дёәfor...inз»“жһ„еҢ…жӢ¬йҖҡиҝҮеҺҹеһӢй“ҫ继жүҝзҡ„еұһжҖ§гҖӮ - Josiah Keller

5
假设 obj 是一个已经构造出来的对象(而不是 JSON 字符串),您可以使用以下代码来实现:
Object.keys(obj).forEach(function(key){
   console.log(key + '=' + obj[key]);
});

hasOwnProperty 不是必需的,因为 Object.keys 已经只包括自有属性。(MDN) - Josiah Keller
Object.keys() 方法是否确保只访问对象本身的属性?因此不需要使用 hasOwnProperty() 方法吗? - user4164128

2
试试像这样的东西:
var prop;
for(prop in obj) {
    if(!obj.hasOwnProperty(prop)) continue;

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

1
在编程中,可以将forEachObject.entries()结合使用。

const WALLPAPERS = [{
  WALLPAPER_KEY: 'wallpaper.image',
  WALLPAPER_VALID_KEY: 'wallpaper.image.valid',
}, {
  WALLPAPER_KEY: 'lockscreen.image',
  WALLPAPER_VALID_KEY: 'lockscreen.image.valid',
}];

WALLPAPERS.forEach((obj) => {
  for (const [key, value] of Object.entries(obj)) {
    console.log(`${key} - ${value}`);
  }
});


0
我会这样做。假设我有一组电影的JSON数据...
movies.forEach((obj) => {
  Object.entries(obj).forEach(([key, value]) => {
    console.log(`${key} ${value}`);
  });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接