0

我对 Javascript 还很陌生,在过去的几天里,我很快就学会了,在盯着我的代码几个小时并试图弄清楚为什么它没有按照我想要的方式工作之后,我想我会把它贴在这里。

无论如何,所以我的问题是如何在逗号拆分后显示数组的全部内容。我的代码如下。我的代码只打印出我在提示符下输入的最后一个数字集。

帮助将不胜感激。

var gradeinfo = new Object(); {

    coursecode = new Array;
    grade = new Array;

};

var changer = function (y) {

    finalgradeinfo = new Array;
    finalgradeinfo = y;

    function newresults() {

        var i = 0;
        finalgradeinfo[i] = y;
        i + 1;

    }
    return finalgradeinfo;
}

do {

    var entry = prompt("Enter a course code and grade seperated by a comma");

    if (entry != null && entry != "") {

        var counter;
        var entryvalid = new Array;
        entryvalid = entry.split(",");
        changer(entryvalid);

        x = true;

    } else {

        x = false;
    }

} while (x != false);

console.log(finalgradeinfo);

我的函数需要包含闭包,所以如果它看起来完全错误,我提前道歉。

4

3 回答 3

0

这篇文章的帮助

拆分已经创建了一个数组。所以,如果你输入 1,2,3,当你拆分它时,你会得到一个这样的数组:["1", "2", "3"]. 在您的for循环中,您从原始输入中获​​取字符,而不是您的数组。为了添加它们,您需要将输入更改为数字,因为它们被视为字符串。所以你的for循环应该是这样的:

for (i=0; i<3; i++)
{
    entryArray[i] = parseFloat(entryArray[i]);
}

用数字覆盖字符串。

于 2013-07-12T06:24:12.073 回答
0

changer()您每次输入后销毁和重新创建数组。我建议将数组声明移动到全局范围内,以便您可以在changer()函数中将元素推送到它:

小提琴

var finalgradeinfo = [];

var changer = function (y) {
    finalgradeinfo.push(y);
}

do {
    var entry = prompt("Enter a course code and grade seperated by a comma");

    if (entry != null && entry != "") {
        var counter;
        var entryvalid = entry.split(",");
        changer(entryvalid);
        x = true;
    } else {
        x = false;
    }
} while (x != false);

console.log(finalgradeinfo);

笔记:

  • 将数组声明为 [] 优于 new Array
  • 不确定您是否知道,但newresults()函数和gradeinfo对象没有做任何事情
于 2013-07-12T06:24:29.103 回答
0

此外,计数器不做任何事情,并且 x 布尔值是不必要的,因为它基本上只是检查提示输入。这是我的方法和小提琴

var finalgradeinfo = { // declare finalgradeinfo in the global scope
    coursecode: [],
    grade: [] }
  , entry = '';

do {
    entry = prompt('Enter a course code and grade seperated by a comma') || ''; // will set entry to '' if user hits cancel
    if (entry == '') continue; // break out of iteration if string is empty
    var entryvalid = entry.split(",");
    finalgradeinfo.coursecode.push(entryvalid[0]);
    finalgradeinfo.grade.push(entryvalid[1]);
} while(entry !== '');

console.log(finalgradeinfo);
于 2013-07-12T06:50:55.983 回答