2013-11-29 3 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

Смежные вопросы