返回与特征关联的名称的Javascript关联数组

返回与特征关联的名称的Javascript关联数组,javascript,html,arrays,associative,Javascript,Html,Arrays,Associative,我试图在有输入框的地方编写代码,如果我输入“A”,我会得到数组中所有获得“A”分数的学生的名字。我觉得我正在接近,但我只是不太明白我需要做什么,使这个代码的功能。任何帮助都将不胜感激 <!DOCTYPE html> <html> <head> <title> Javascript </title> <script> var students = [ {name:"Lina",grade:"F"}, {name:"Fr

我试图在有输入框的地方编写代码,如果我输入“A”,我会得到数组中所有获得“A”分数的学生的名字。我觉得我正在接近,但我只是不太明白我需要做什么,使这个代码的功能。任何帮助都将不胜感激

<!DOCTYPE html>
<html>
<head>
<title> Javascript </title>


<script>
var students = [
 {name:"Lina",grade:"F"},
 {name:"Fredrik",grade:"D"},
 {name:"Sara",grade:"C"},
 {name:"Lucia",grade:"B"},
 {name:"Hans",grade:"A"},
 {name:"Jonathan", grade: "A"}
]

gradesByLetter = ['A', 'B', 'C', 'D', 'F'].map(function(letter){
return students.filter(function(student){
 return student.grade == letter;
 });
});

gradesByLetter.forEach(function(list){
list.forEach(function(student){
   document.getElementById(student.grade).innerHTML += "<li>" + student.name +      " (" + student.grade + ")"
});
});


f1.addEventListener('submit', function(evt){
evt.preventDefault(); //ignore this for now but this will stop the error
studentList.innerHTML += "<li>" + studentName.value + " (" + grade.value + ")"
});


</script>
</head>


<body>
<h1>Min Rubik</h1>
<form id="f1">
    <input type="text" id="studentName" placeholder="Student Name">
    <input type="text" id="grade" placeholder="Grade">
    <input type="submit" value="Add">
</form>
<h2>Students:</h2>
<ul id="studentList">
    <ol id="A"></ol>
    <ol id="B"></ol>
    <ol id="C"></ol>
    <ol id="D"></ol>
    <ol id="F"></ol>
</ul>
</body>
</html>

Javascript
var学生=[
{姓名:“丽娜”,年级:“F”},
{姓名:“弗雷德里克”,年级:“D”},
{姓名:“Sara”,年级:“C”},
{姓名:“卢西亚”,成绩:“B”},
{姓名:“汉斯”,成绩:“A”},
{姓名:“乔纳森”,成绩:“A”}
]
gradesByLetter=['A','B','C','D','F'].map(函数(字母){
返回student.filter(函数(student)){
返回student.grade==字母;
});
});
gradesByLetter.forEach(函数(列表){
list.forEach(函数(学生){
document.getElementById(student.grade).innerHTML+=“
  • ”+student.name+”(“+student.grade+”) }); }); f1.addEventListener('submit',函数(evt){ evt.preventDefault();//暂时忽略此选项,但这将停止错误 studentList.innerHTML+=“
  • ”+studentName.value+”(“+grade.value+”) }); 魔方 学生:

  • 答案如下,如果你将成绩留空,它将显示所有学生

    <!DOCTYPE html>
    
    <html>
    <head>
    <title>Javascript</title>
    
    </head>
    
    <body>
    
    <h1>Min Rubik</h1>
    <form id="f1">
        <input type="text" id="studentName" placeholder="Student Name">
        <input type="text" id="grade" placeholder="Grade">
        <input type="button" id="click_me" value="Add">
    </form>
    <h2>Students:</h2>
    <ul id="studentList">
    </ul>
    
    <script>
    
    var students = [
        {name:"Lina",grade:"F"},
        {name:"Fredrik",grade:"D"},
        {name:"Sara",grade:"C"},
        {name:"Lucia",grade:"B"},
        {name:"Hans",grade:"A"},
        {name:"Jonathan", grade: "A"}
    ];
    
    function clickHandler() {
    document.getElementById("studentList").innerHTML = "";
    students.forEach(function(student) {
        if ((student.grade == document.getElementById("grade").value || document.getElementById("grade").value == "") &&
            (student.name.toLowerCase() == document.getElementById("studentName").value.toLowerCase() || document.getElementById("studentName").value == "")) {
            document.getElementById("studentList").innerHTML += "<li>" + student.name + " (" + student.grade + ")"
        }
    });
    }
    
    document.getElementById("click_me").addEventListener('click',clickHandler);
    
    </script>
    
    </body>
    </html>
    
    
    Javascript
    魔方
    学生:
    
    var学生=[ {姓名:“丽娜”,年级:“F”}, {姓名:“弗雷德里克”,年级:“D”}, {姓名:“Sara”,年级:“C”}, {姓名:“卢西亚”,成绩:“B”}, {姓名:“汉斯”,成绩:“A”}, {姓名:“乔纳森”,成绩:“A”} ]; 函数clickHandler(){ document.getElementById(“学生列表”).innerHTML=“”; students.forEach(函数(学生){ if((student.grade==document.getElementById(“grade”).value | | document.getElementById(“grade”).value==“”)&& (student.name.toLowerCase()==document.getElementById(“studentName”).value.toLowerCase()| | document.getElementById(“studentName”).value==“”){ document.getElementById(“学生列表”).innerHTML+=“
  • ”+student.name+”(“+student.grade+”) } }); } document.getElementById(“click_me”).addEventListener(“click”,clickHandler);
  • 这个问题没有建设性。你要求我们为你做家庭作业,这里没有太多明显的努力。我上周才开始学习这些东西,似乎花了无穷无尽的时间。我很抱歉,如果这看起来不像“太明显的努力”,但我一直在努力尝试理解这一点。我很抱歉假设你没有在这个项目上付出任何努力。我已经发布了一个解决方案,可以满足您的要求。如果您觉得有用,请将其标记为已接受的答案。谢谢。您的主要问题是,在该元素出现在DOM中之前,您试图将事件处理程序附加到ID为f1的元素。将脚本放在正文的末尾,而不是前面。另外,通常您应该使用
    document.getElementById()
    ,而不是假设存在一个具有元素ID的全局变量。我认为这是一个答案,但期望OP播放“找出差异”并没有启用。是的,这确实是解决问题的正确方法。你所做的只是指出显而易见的,而不是纠正它。如果他不能理解这个简单的代码,那么他应该在领先的时候退出。我解释了他问题的根源。听我说,除了代码和解释之外什么都没有的答案在这里是不受欢迎的。