js中的未定义参数

时间:2017-09-12 08:37:37

标签: javascript arrays undefined

我收到一个类型错误,指出每当我将输入添加到html页面时,数组testA [i]都是未定义的。我有数组,我试图使用push方法将数字值添加到数组中,以添加到数组的第二部分,即([0] [货币])

function Test() {

var testA = [];
for (i = 0; i < 4; i++) {
        this.currency = prompt("Please enter a 3-letter currency abbreviation", "");
        testA[i].push(currency);
        }
}
var index = new Test();

enter image description here

任何有关数组未定义的帮助都将不胜感激。

注意:我现在尝试了testA.push(货币)和testA [i] = this.currency,我仍然得到与以前相同的错误。

注意:最终版本应该循环通过4个不同的问题并且每次将它们添加到数组中。在循环结束时,应该创建一个新的数组变体,并将输入的新数据集添加到其中。就像是      for(i = 0; i < 4; i++) { testA[i] = i; for(j = 0; j < 4; j++) { this.currency = prompt("Please enter a 3-letter currency abbreviation", ""); testA[i][j] = this.currency; } }

但是在这个时候我只是想让它发挥作用。

4 个答案:

答案 0 :(得分:5)

您不能在索引上使用push方法。你在阵列上使用它。

替换此

testA[i].push(currency);

有了这个

testA.push(currency);

答案 1 :(得分:1)

您需要直接对阵列执行推送操作。

testA.push(currency);

通过执行testA[index],您将获得持有价值。在JS中,如果index大于数组长度,它将始终返回undefined

由于您的数组作为开头是空的,因此您始终会收到undefined

答案 2 :(得分:1)

你正在混合两种不同的实现。

要么使用直接分配。

var testA = new Array(4);

for (i = 0; i < 4; i += 1) {
    this.currency = prompt('...', '');

    testA[i] = this.currency;
}

您可以将新值推送到数组中。

var testA = [];

for (i = 0; i < 4; i += 1) {
    this.currency = prompt('...', '');

    testA.push(this.currency);
}

你应该使用第二个,这是最简单的 soluce

答案 3 :(得分:1)

testA[i] = this.currency OR testA.push(this.currency) 

使用

下面的修改功能
function Test() {
       var testA = [];
            for (i = 0; i < 4; i++) {
                    this.currency = prompt("Please enter a 3-letter currency abbreviation", "");
                    testA[i] = this.currency; // use this.currency here if you 
                    }
            console.log(testA);
            }

var index = new Test();