如何迭代数组中的对象值?
问题描述:
我有一个这样的对象:如何迭代数组中的对象值?
{
username: {
hobby: [
{
hobby1: "cricket",
hobby2: "swim"
},
{
hobby3: "dance",
hobby4: "zumba"
}
]
}
}
我可以很容易地做一个forEach
,做console.log(item)
但如果我只想值板球,游泳,舞蹈,尊巴单独(不需要hobby1
通过hobby4
) 。有人能告诉我如何单独提取这些值吗?
答
,就可以轻松的对象,并使用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
答
试试这个,我了解的是,你只需要“兴趣爱好”为价值不是他们的索引
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; }
现在的问题是不明确的。对象中的“嗜好”在哪里? – brk
你能告诉我们确切的输出细节吗? –
您试图实现什么值输出 – bdalina