【问题标题】:Array.push causes program to have errorsArray.push 导致程序出错
【发布时间】:2012-08-26 06:36:54
【问题描述】:

我按照上一个问题的建议让我的提示将值添加到数组中,但它导致我的程序抛出 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,所以整个事情都搞砸了。

我收到了一个无效的课程代码错误,这是有问题的。

【问题讨论】:

  • 您的问题是什么?它是如何失败的?
  • 它抛出了无效的课程代码,就好像它应该为假时给它一个真值。

标签: javascript arrays loops push prompt


【解决方案1】:

您要验证输入的课程代码吗?在这种情况下,您需要使用项目而不是整个数组:

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);
}

【讨论】:

    【解决方案2】:

    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 数组也需要这样做。

    【讨论】:

    • @raina77ow:确实,谢谢,我不知道 OP 在哪里向该数组添加元素,但我会记下。
    • 试过了,当我故意不遵守条件时,我不再收到任何错误消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多