2013-11-29 80 views
1
var student = new Object(); 
student.classes = ["Digital Photography","Chemistry I","Art of Film","Business in Microcomputer Applications","Study Hall","Algebra 2","Careers","Business Math"] 

function newStudent(){ 
    var studentName = document.getElementById("name").value; 
    var one = document.getElementById("1").value; 
    var two = document.getElementById("2").value; 
    var three = document.getElementById("3").value; 
    var four = document.getElementById("4").value; 
    var five = document.getElementById("5").value; 
    var six = document.getElementById("6").value; 
    var seven = document.getElementById("7").value; 
    var eight = document.getElementById("8").value; 
    var newStudent = new Object(); 
    newStudent.name = studentName; 
    newStudent.classes = [one, two, three, four, five, six, seven, eight]; 
    if(student.classes.slice(0,1) == newStudent.classes.slice(0,1)){ 
     alert('You share first hour with Student'); 
    } else { 
     alert("You have " + newStudent.classes.slice(0,1) + " instead of " + student.classes.slice(0,1)); 
    } 
} 

爲什麼如果我輸入數碼攝影作爲newStudent的第一類不顯示警告告訴用戶他們共享該類?爲什麼這些值不相等?

忽略潦草的代碼我累了,現在我累了,感到困惑。

+0

因爲你比較兩個不同的陣列。 '.slice'給你一個新的數組。嘗試循環。 – elclanrs

+0

@elclanrs如果.slice的值是相同的,如果我測試它們是否相等,它是否應該不會恢復爲真? – TheWalkingPacifist

+1

不,比較數組直接比較對象身份。如果你想比較數組的內容,你必須循環和比較每一個。 –

回答

3

在這種情況下student.classes.slice(0,1)你數組一個元素,因此要獲得它的元素使用索引

... 
if(student.classes.slice(0,1)[0] == newStudent.classes.slice(0,1)[0]){ 
... 
+0

在我正在運行的代碼中,我沒有全局學生變量,我只是因爲個人原因更改了措辭。 – TheWalkingPacifist

+0

@TheWalkingPacifist我是你的樣本指導:-) – Grundy

+0

而你做了一個很好的工作,謝謝:) 我會改變我的樣本,所以不會發生 – TheWalkingPacifist