Javascript:关联数组,用于返回与对象相关的信息

时间:2015-02-11 01:32:07

标签: javascript arrays associative-array

我有一系列的学生姓名和他们在学期获得的成绩。我怎么能得到我的javascript代码来返回所有根据我的阵列获得“A”等级的学生的名字?我知道这已经过时了,但这是我到目前为止所做的。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Javascript</title>
    <script>
    var grades= [];

    grades [0] = "F";
    student [0] = "John";
    grades [1] = "D";
    student [1] = "George";
    grades [2] = "C";
    student [2] = "Bill";
    grades [3] = "B";
    student [3] = "Ted";
    grades [4] = "A";
    student [4] = "Rick";

    function getNames ()
    {

        for (var i =0;i <grades.length;i++)
            {
        if (grades[1] = "F")
            {
            document.getElementById("lowgrade").innerHTML= student[1];
            }
        else if(grades[1] = "D")
            {
            document.getElementById("midlowgrade").innerHTML= student[1];
            }
        else if(grades[1] = "C")
            {
            document.getElementById("midgrade").innerHTML= student[1];
            }
        else if(grades[1] = "B")
            {
            document.getElementById("highgrade").innerHTML= student[1];
            }
        else if(grades[1] = "A")
            {
            document.getElementById("bestgrade").innerHTML = student[1];
            }

    }

    </script>

</head>

<body>
    <h1>My Page</h1>
    <form name = "f1">
    Enter Grade<input type ="text" id="grades" name="wed" value="" /><br/>
    <input type="button" value="Check Student" onclick="getNames()" />
    </form>
    <div id="text" />

</body>

</html>

3 个答案:

答案 0 :(得分:0)

function getStudentsByGrade(grade){
var grade_students = [];

for(var i=0;i < students.length;i++){
if(grades[i] == grade){
grade_students.push(students[i]);
}
}
return grade_students;
}

var grade_a_students = getStudentsByGrade("A");

答案 1 :(得分:0)

function getNames(){
  for(var i = 0; i < grades.length; i++){
    if(grades[i] == "F"){
      document.getElementById("lowgrade").innerHTML = student[i];
    }
    else if(grades[i] == "D"){
      document.getElementById("midlowgrade").innerHTML = student[i];
    }
    else if(grades[i] == "C"){
      document.getElementById("midgrade").innerHTML = student[i];
    }
    else if(grades[i] == "B"){
      document.getElementById("highgrade").innerHTML = student[i];
    }
    else if(grades[i] == "A"){
      document.getElementById("bestgrade").innerHTML = student[i];
    }
  }
}

你犯了一些错误:

  1. 你用1而不是i。
  2. 您使用=而不是==。
  3. 你忘了用}。
  4. 关闭for
  5. 你的身份错误。

答案 2 :(得分:0)

var students = [
  {name: "John", grade: "F"},
  {name: "George", grade: "D"}
] //obviously fill the rest

function getByGrade(grade){
  return students.filter(function(student){
    return student.grade.toUpperCase() == grade.toUpperCase();
  });
});

As = getByGrade('F');
Bs = getByGrade('D');

(依此类推)

或者类似的东西:

['A', 'B', 'C', 'D', 'F'].map(function(letter){
  return students.filter(function(student){
     return student.grade.toUpperCase() == letter; //if all the letters are uppercased already on the student objects then no need for `toUpperCase()`
  });
});