通过在具有嵌套数组的对象数组中循环创建对象。Javascript

通过在具有嵌套数组的对象数组中循环创建对象。Javascript,javascript,arrays,object,nested,push,Javascript,Arrays,Object,Nested,Push,我在循环数组中的数组和数组中的对象并将这些名称放入结果数组时遇到问题。我知道如何在我的结果对象内部创建新属性,但为了做到这一点,我需要将名称推送到我创建的名称数组中。也许我没有正确地循环它 var学生=[{ 名字:'乔', 颜色:“蓝色”, 年龄:13岁, 身高:61, “最喜欢的爱好”:[‘绘画’、‘运动’、‘游泳’], 生日:1992年1月12日 }, { 名字:“戴夫”, 颜色:“红色”, 年龄:14岁, 身高:60, “最喜欢的爱好”:[“游泳”、“骑自行车”、“徒步旅行”], 生日:

我在循环数组中的数组和数组中的对象并将这些名称放入结果数组时遇到问题。我知道如何在我的结果对象内部创建新属性,但为了做到这一点,我需要将名称推送到我创建的名称数组中。也许我没有正确地循环它

var学生=[{
名字:'乔',
颜色:“蓝色”,
年龄:13岁,
身高:61,
“最喜欢的爱好”:[‘绘画’、‘运动’、‘游泳’],
生日:1992年1月12日
},
{
名字:“戴夫”,
颜色:“红色”,
年龄:14岁,
身高:60,
“最喜欢的爱好”:[“游泳”、“骑自行车”、“徒步旅行”],
生日:1992年1月29日
},
{
姓名:“莎莉”,
颜色:'黄色',
年龄:13岁,
身高:64,
“最喜欢的爱好”:[‘骑自行车’、‘唱歌’、‘跳舞’]
},
{
姓名:'简',
颜色:'白色',
年龄:12岁,
身高:58,
“最喜欢的爱好”:[‘跳舞’、‘游泳’、‘画画’]
},
{
姓名:'凯拉',
颜色:“蓝色”,
年龄:14岁,
身高:62,
“最喜欢的爱好”:[‘徒步旅行’、‘运动’、‘绘画’]
},
];
//给定student对象数组,findHobbies返回:
//包含三个属性的对象:
//爱好
//有针对性的爱好
//学生
//匹配目标爱好的学生姓名数组
//平均数
//符合目标爱好的学生的平均年龄
var findHobbies=函数(arr,目标){
var result={};
结果:爱好=目标;
//result.average=
对于(变量i=0;i*/
您应该将学生姓名推送到
result.students
,您可以使用空数组初始化该结果

使用另一个变量保存所有匹配学生的总年龄。将年龄相加,然后计算最后的平均值

//findHobbies,给定一个student对象数组,返回:
//包含三个属性的对象:
//爱好
//有针对性的爱好
//学生
//匹配目标爱好的学生姓名数组
//平均数
//符合目标爱好的学生的平均年龄
var findHobbies=函数(arr,目标){
var结果={
爱好:目标,
学生:【】,
平均年龄:0
};
var总年龄=0;
对于(变量i=0;i0){
result.average=总年龄/result.students.length;
}
返回结果;
}
var学生=[{
名字:'乔',
颜色:“蓝色”,
年龄:13岁,
身高:61,
“最喜欢的爱好”:[‘绘画’、‘运动’、‘游泳’],
生日:1992年1月12日
},
{
名字:“戴夫”,
颜色:“红色”,
年龄:14岁,
身高:60,
“最喜欢的爱好”:[“游泳”、“骑自行车”、“徒步旅行”],
生日:1992年1月29日
},
{
姓名:“莎莉”,
颜色:'黄色',
年龄:13岁,
身高:64,
“最喜欢的爱好”:[‘骑自行车’、‘唱歌’、‘跳舞’]
},
{
姓名:'简',
颜色:'白色',
年龄:12岁,
身高:58,
“最喜欢的爱好”:[‘跳舞’、‘游泳’、‘画画’]
},
{
姓名:'凯拉',
颜色:“蓝色”,
年龄:14岁,
身高:62,
“最喜欢的爱好”:[‘徒步旅行’、‘运动’、‘绘画’]
},
];
console.log(findhobies(学生,“游泳”);
/*
应返回:
{
爱好:“游泳”,
学生:[“乔”、“戴夫”、“简”],
平均年龄:13
}

*/
对于替代解决方案,您可以使用

var学生=[
{
姓名:“乔”,
颜色:“蓝色”,
年龄:13岁,
身高:61,
“喜爱的爱好”:[“绘画”、“运动”、“游泳”],
生日:“1/12/1992”,
},
{
姓名:“戴夫”,
颜色:“红色”,
年龄:14岁,
身高:60,
“最喜欢的爱好”:[“游泳”、“骑自行车”、“徒步旅行”],
生日:“1992年1月29日”,
},
{
姓名:“莎莉”,
颜色:“黄色”,
年龄:13岁,
身高:64,
“最喜欢的爱好”:[“骑自行车”、“唱歌”、“跳舞”],
},
{
姓名:“简”,
颜色:“白色”,
年龄:12岁,
身高:58,
“最喜欢的爱好”:[“跳舞”、“游泳”、“画画”],
},
{
姓名:“凯拉”,
颜色:“蓝色”,
年龄:14岁,
身高:62,
“爱好”:[“徒步旅行”、“运动”、“绘画”],
},
];
//给定student对象数组,findHobbies返回:
//包含三个属性的对象:
//爱好
//有针对性的爱好
//学生
//匹配目标爱好的学生姓名数组
//平均数
//符合目标爱好的学生的平均年龄
功能查找对象(arr、爱好){
常数累加器={
爱好
学生:【】,
平均年龄:0,
};
const result=学生人数减少((acc,curr)=>{
const{姓名、年龄,“最喜欢的爱好”:sHobby}=curr;
如果(包括(嗜好)){
acc.学生推送(姓名);
acc.平均年龄+=年龄;
}
返回acc;
},蓄能器);
result.average/=result.students.length;
返回结果;
}

console.log(findhobies(学生,“游泳”)
什么是
数组
?我的意思是在数组中键入名称。