Javascript 在对象数组上使用forEach()

Javascript 在对象数组上使用forEach(),javascript,Javascript,我知道如何以另一种方式获取网页上的所有信息,但我正在尝试使用forEach()方法在网页上获取这些信息,以了解一些新的信息。这是我第一次使用forEach()方法。有人能告诉我哪里做错了吗?除了值以外的所有内容都会打印到网页上 让学生=[ {name:“Milla Jovovich”,曲目:“Fullstack JavaScript”,成绩:5,分数:50} ,{姓名:“Bjon Aarseth”,轨道:“iOS开发”,成绩:7,分数:70} ,{名称:“Varg Oystein”,轨道:“前

我知道如何以另一种方式获取网页上的所有信息,但我正在尝试使用forEach()方法在网页上获取这些信息,以了解一些新的信息。这是我第一次使用forEach()方法。有人能告诉我哪里做错了吗?除了值以外的所有内容都会打印到网页上

让学生=[
{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别担心!