//global variable
counter=0;
var highestAvg=0;
var average = new Array();
var studObj = new Array();
var teachObj = new Array();
//Objects
var student = {
studName:"",
studentId:"",
courses:['a', 'b', 'c', 'd'],
marks:[]}
var teacher = {
profName:"",
course:"",
office:"",
email:""}
for(var i=0; i<30; i++)
{
studObj[i] = Object.create(student);
var check = prompt('Please enter students name(!!! to exit): ','');
if(check !== '!!!')
{
studObj[i].studName = check;
studObj[i].studentId = prompt('Please enter student ID: ','');
var total=0;
for(var j=0; j<4; j++)
{
studObj[i].marks[j] = prompt('Please enter student marks for ' + studObj[i].courses[j] + ' : ','');
if(studObj[i].marks[j] > 100 || studObj[i].marks[j] < 0)
{
alert("Incorrect mark, please enter a correct mark!")
j--;
}
else
{
total += Number(studObj[i].marks[j]);
}
}
average[i] = total/4;
counter++;
}
else
{
break;
}
alert(average[i]);
}
var highestAvg = Number(average[0]);
for(var x=1; x<counter; x++)
{
if((Number(average[x])) > highestAvg)
{
highestAvg = average[x];
var z=x
}
}
alert(highestAvg);
alert('The student with the highest overall average is: \nStudent Name: ' + studObj[z].studName + '\nStudent ID: ' + studObj[z].studentId + '\nCourses: ' + studObj[z].courses + '\nMarks: ' + studObj[z].marks + '\nAverage Mark: ' + average[z]);
왜 마크 배열이 스터브브 배열에 저장되지 않는지 알지 못하고 대신 덮어 쓰기됩니다. 값을 저장하기 위해 다른 배열을 추가하려고 시도했지만 다시 입력 한 마지막 4 개의 마크로 보여줍니다. 사전에 도움을 주셔서 감사합니다.배열의 마지막 입력 만 표시
['prompt'] (https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt) Javascript에서. 그러나 나는 당신이 현재 과용하는 방식으로 그것을 과용하지 말 것을 권한다. – bits
괜찮습니다. 크롬 32.0.1700.107 m. 그냥 콘솔에서 실행하고 모든 값은 올바른 지점에 할당됩니다. 어떤 브라우저와 버전을 구현할 것인가? (좀 짜증나지만 폼을 살펴보아야한다.) 또한, 카운터 대신에'array.length'를 사용할 것을 제안 할 수 있을까? –
'Math.max.apply (Math, average) '를 사용해 보았습니다. 그런 다음'average' 배열을 루핑하여 학생 번호를 얻으셨습니까? 그러면 'var 카운터'가 필요 없습니다. – PHPglue