JSON forEach获取密钥和值

ges*_*nha 25 javascript

forEach在一个名为的JSON对象上有以下循环obj:

Object.keys(obj).forEach(function(){
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能使console.log双方keyvalue对象内部的每一个项目的?像这样的东西:

Object.keys(obj).forEach(function(k, v){
    console.log(k + ' - ' + v);
});
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Jos*_*ler 48

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

Object.keys(obj).forEach(function(k){
    console.log(k + ' - ' + obj[k]);
});
Run Code Online (Sandbox Code Playgroud)


dun*_*all 5

假设这obj是一个预先构造的对象(而不是JSON字符串),您可以使用以下方法实现此目的:

Object.keys(obj).forEach(function(key){
   console.log(key + '=' + obj[key]);
});
Run Code Online (Sandbox Code Playgroud)


小智 5

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

for(var key in object){
  console.log(key + ' - ' + object[key])
}
Run Code Online (Sandbox Code Playgroud)

所以对于你的:

for(var key in obj){
  console.log(key + ' - ' + obj[key])
}
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,使用 `hasOwnProperty` _is_ 是必要的,因为 for...in 构造包括通过原型链继承的属性。 (2认同)

Enz*_*ers 5

使用箭头功能遍历对象

ES6

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

ES7

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

ES8

使用ES8遍历对象并进行解释

  • 如果你有 ES7+,Object.entries 是最好的答案。谢谢你! (2认同)