2015-02-11 57 views
0

我有一組學生姓名和他們在這個學期獲得的成績。我怎樣才能讓我的JavaScript代碼返回所有根據我的數組獲得「A」等級的學生的名字?我知道這是離開,但這是我迄今爲止。你做Javascript:關聯數組返回與對象有關的信息

<!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> 
+1

這麼多問題,你正在使用的不是= ==或=== ....你已經畢業[1]而不是成績[i]。在問這裏之前,你需要對自己的家庭作業進行一些基本的調試。 – 2015-02-11 01:35:22

+0

您正在爲每個「if」分配值。查看[比較](http://www.w3schools.com/js/js_comparisons.asp)。 – adamdc78 2015-02-11 01:36:10

回答

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"); 
+0

你們都很棒,非常感謝。我對這件事情非常陌生,這是一個巨大的幫助! – hartjacko 2015-02-12 01:55:31

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我。
  2. 您使用=而不是==。
  3. 您忘記關閉for了。
  4. 你得到了錯誤的身份。
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()` 
    }); 
}); 
+0

非常感謝!然後,我如何讓用戶輸入成績並返回學生?我的意思是我如何允許輸入,然後將此功能分配給一個按鈕,該按鈕將獲得與該等級相關聯的人的姓名?再次感謝你的幫助! – hartjacko 2015-02-12 03:06:41

+0

我假設你是一個JavaScript初學者,所以去http://jsfiddle.net/#&togetherjs=ltDSRMVlrJ,我會幫你。 – 2015-02-12 03:08:33

+0

什麼時候適合你? – hartjacko 2015-02-12 03:44:14