Javascript 在对象数组上使用forEach()
我知道如何以另一种方式获取网页上的所有信息,但我正在尝试使用forEach()方法在网页上获取这些信息,以了解一些新的信息。这是我第一次使用forEach()方法。有人能告诉我哪里做错了吗?除了值以外的所有内容都会打印到网页上Javascript 在对象数组上使用forEach(),javascript,Javascript,我知道如何以另一种方式获取网页上的所有信息,但我正在尝试使用forEach()方法在网页上获取这些信息,以了解一些新的信息。这是我第一次使用forEach()方法。有人能告诉我哪里做错了吗?除了值以外的所有内容都会打印到网页上 让学生=[ {name:“Milla Jovovich”,曲目:“Fullstack JavaScript”,成绩:5,分数:50} ,{姓名:“Bjon Aarseth”,轨道:“iOS开发”,成绩:7,分数:70} ,{名称:“Varg Oystein”,轨道:“前
让学生=[
{name:“Milla Jovovich”,曲目:“Fullstack JavaScript”,成绩:5,分数:50}
,{姓名:“Bjon Aarseth”,轨道:“iOS开发”,成绩:7,分数:70}
,{名称:“Varg Oystein”,轨道:“前端开发”,成绩:12,分数:120}
,{名称:“威廉·斯特里佩”,轨道:“软件工程”,成就:9,分数:90}
,{名称:“安德斯·汉森”,轨道:“数据科学”,成绩:22,分数:220}
] ;
让消息=”;
让学生;
让我们搜索;
功能打印(消息){
让outputDiv=document.getElementById(“输出”);
outputDiv.innerHTML=消息;
}
students.forEach(函数(myElement)){
for(输入myElement){
myElement+=“学生:“+myElement[键]+”;
myElement+=“曲目:“+myElement[键]+””;
myElement+=“成就:“+myElement[键]+””;
myElement+=“点:“+myElement[键]+””;
}
打印(myElement);
}) ;代码>
您有几个问题:
内部for循环是冗余的,因为它向每个信息块添加相同的值。相反,您可以删除它并仅访问每个对象所需的键(使用点表示法)
当执行myElement+=“string”
操作时,您正试图将字符串与对象连接起来,因为myElement
表示数组中的给定对象。相反,您可以使用空字符串(消息
),并在循环的每次迭代中添加到该字符串中
完成此操作后,消息
变量将包含.forEach
循环完成后需要打印的标记,因此可以将print()
行移动到for循环之外
见下例:
让学生=[{
姓名:“米拉·乔沃维奇”,
曲目:“Fullstack JavaScript”,
成绩:5,
分数:50
},
{
姓名:“Bjon Aarseth”,
轨道:“iOS开发”,
成绩:7,
积分:70
},
{
姓名:“Varg Oystein”,
曲目:“前端开发”,
成绩:12,
积分:120
},
{
姓名:“威廉·斯特里佩”,
曲目:“软件工程”,
成绩:9,
积分:90
},
{
姓名:“安德斯·汉森”,
曲目:“数据科学”,
成绩:22,
积分:220
}
];
让消息=”;
功能打印(消息){
让outputDiv=document.getElementById(“输出”);
outputDiv.innerHTML+=消息;
}
students.forEach(函数(myElement)){
消息+=“学生:+myElement.name+”;
消息+=”跟踪:“+myElement.Track+””;
消息+=“成就:“+myElement.magnetions+””;
消息+=”点:“+myElement.Points+””;
});
打印(信息)代码>
您不需要在中为…使用对元素进行迭代。每个人的forEach
就足够了
让学生=[{
姓名:“米拉·乔沃维奇”,
曲目:“Fullstack JavaScript”,
成绩:5,
分数:50
},
{
姓名:“Bjon Aarseth”,
轨道:“iOS开发”,
成绩:7,
积分:70
},
{
姓名:“Varg Oystein”,
曲目:“前端开发”,
成绩:12,
积分:120
},
{
姓名:“威廉·斯特里佩”,
曲目:“软件工程”,
成绩:9,
积分:90
},
{
姓名:“安德斯·汉森”,
曲目:“数据科学”,
成绩:22,
积分:220
}
];
让消息=”;
让学生;
让我们搜索;
功能打印(消息){
让outputDiv=document.getElementById(“输出”);
outputDiv.innerHTML=消息;
}
message=“”//在这里声明您的“消息”,即输出的内容
students.forEach(函数(myElement)){
消息+=“学生:+myElement.name+”;
消息+=”跟踪:“+myElement.Track+””;
消息+=“成就:“+myElement.achivements+””;
消息+=”点:“+myElement.Points+””;
});
打印(消息);//将所有学员添加到变量后打印“消息”
您的代码伴侣中没有任何名为outputDiv
的HTML
元素myElement
引用每个学生对象。为什么要在myElement+=
内部for…in
循环中执行?也许你想做message+=
和print(message)
我刚刚添加了我的HTML和CSS。我没有那个元素。这正是我命名的变量。不过,我的HTML中确实有一个输出ID。@adiga没有,我是故意在那里写myElement的。但它不应该在那里。信息应该在那里。我不想在以后使用message变量来避免范围混淆。我将在声明旁边添加一条注释,以记住它是在函数中更改的。另外,如果全局消息变量和打印的消息参数有不同的名称,则更好。谢谢您的帮助@天堂666别担心!