我收到一个类型错误,指出每当我将输入添加到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();
任何有关数组未定义的帮助都将不胜感激。
注意:我现在尝试了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;
}
}
但是在这个时候我只是想让它发挥作用。
答案 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();