Array.push导致程序出错

Array.push causes program to have errors

本文关键字:程序出错 push Array      更新时间:2023-09-26

我遵循了上一个问题中的建议,获得了向数组添加值的提示,但这导致我的程序在没有True值的情况下抛出True值。

HIGHEST_GRADE = 7;
LOWEST_GRADE = 0;
var course = new Array();
var grade = new Array();
while(confirm("Would you like to add a course?")){
    course.push( prompt("Enter the course code. Example - ABC1234") );
};
var upperTest = course.slice(0,3);
var integerTest = course.slice(4,7);
if (course.length !== 7) {
    alert ('Invalid Course Code');
}
if (upperTest !== upperTest.toUpperCase()) {
     alert ('Invalid Course Code');
}
if (isNaN(integerTest)) {
    alert('Invalid Course Code'); 
}
if (isNaN(grade)) {
    alert('Invalid Grade');
}
if (LOWEST_GRADE > grade || HIGHEST_GRADE < grade) {
    alert('Invalid Grade');
}       

我已经设置好了,以确保输入的文本符合条件,但由于添加了.push,整个东西都塞了。

我收到一个"无效课程代码"错误,有什么问题。

Array用于存储多个课程,这很好。但是,由于它是一个数组,您需要访问它的每个位置,以使用循环验证每个单独的课程:

var courses = new Array();  // use the name courses instead, to indicate that it's a collection
for (var i = 0; i < courses.length; i++) {
  var course = courses[i];
  var upperTest = course.slice(0,3);
  var integerTest = course.slice(4,7);
  if (course.length !== 7) {
    alert ('Invalid Course Code');
  }
  if (upperTest !== upperTest.toUpperCase()) {
    alert ('Invalid Course Code');
  }
  if (isNaN(integerTest)) {
    alert('Invalid Course Code'); 
  }
}

这将验证Array中的每个course。否则,当您测试courses.length时,您将验证数组中的元素数,而不是每个课程的字符数。

对于grades阵列也需要执行同样的操作。

是否要验证输入的课程代码?在这种情况下,你需要对项目而不是整个数组进行操作:

while (confirm("...")) {
  var courseCode = prompt("...");
  var upperTest = course.slice(0,3);
  var integerTest = course.slice(4,7);
  if (courseCode.length !== 7) {
    alert ('Invalid Course Code');
    continue;
  }
  // place your other if's here
  courses.push(courseCode);
}