如何迭代数组中的对象值?

问题描述:

我有一个这样的对象:如何迭代数组中的对象值?

{ 
    username: { 
    hobby: [ 
     { 
     hobby1: "cricket", 
     hobby2: "swim" 
     }, 
     { 
     hobby3: "dance", 
     hobby4: "zumba" 
     } 
    ] 
    } 
} 

我可以很容易地做一个forEach,做console.log(item)但如果我只想值板球,游泳,舞蹈,尊巴单独(不需要hobby1通过hobby4) 。有人能告诉我如何单独提取这些值吗?

+1

现在的问题是不明确的。对象中的“嗜好”在哪里? – brk

+1

你能告诉我们确切的输出细节吗? –

+1

您试图实现什么值输出 – bdalina

,就可以轻松的对象,并使用for阵列一个for这样内循环:

let obj = { 
 
     username: { 
 
      hobby: [ 
 
       { 
 
        hobby1: "cricket", 
 
        hobby2: "swim" 
 
       }, 
 
       { 
 
        hobby3: "dance", 
 
        hobby4: "zumba" 
 
       } 
 
      ] 
 
    } 
 
} 
 

 
for(let hobbies of obj.username.hobby) { 
 
    for(let hobby in hobbies) { 
 
      console.log(hobbies[hobby]) 
 
    } 
 
}

如果你想只用爱好的对象,则可以减少阵列返回

var obj = { 
 
    username: { 
 
    hobby: [{ 
 
     hobby1: "cricket", 
 
     hobby2: "swim" 
 
     }, 
 
     { 
 
     hobby3: "dance", 
 
     hobby4: "zumba" 
 
     } 
 
    ] 
 
    } 
 
} 
 

 
var obj2 = obj.username.hobby.reduce((a, b) => { 
 
    Object.entries(b).forEach(x => a[x[0]] = x[1]); return a; 
 
}, {}) 
 

 
console.log(obj2); 
 
console.log(Object.values(obj2)); // just the values

+0

语法错误。可以解决它? –

+0

@RameshRajendran - 然后得到一个适当的浏览器 – adeneo

+0

IE 11不是一个适当的浏览器? –

试试这个,我了解的是,你只需要“兴趣爱好”为价值不是他们的索引

var json= { 
     username: { 
      hobby: [{ 
       hobby1: "cricket", 
       hobby2: "swim" 
      }, 
      { 
       hobby3: "dance", 
       hobby4: "zumba" 
      }] 
     } 
     } ; 

var hobbies=json.username.hobby; 

var hobbies_arr=[]; 
var i=0; 
for(var item in hobbies){ 
    item=hobbies[item];   
    for(var hobby in item){ 
     hobby=item[hobby]; 
     hobbies_arr[i]=hobby; 
     i++; 
    } 
} 

console.log(hobbies_arr); 

出认沽将

数组[ “蟋蟀”, “游”, “舞蹈”, “尊巴”]

您可以使用array#reduce将您的所有爱好累积到数组中。

var obj = {username: {hobby: [{hobby1: "cricket",hobby2: "swim"},{hobby3: "dance",hobby4: "zumba"}]}}; 
 

 
var result = obj.username.hobby.reduce((res, obj) => res.concat(Object.values(obj)), []); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }