在 JS 中调用二维数组时一直未定义
Keep getting undefined when calling 2 dimensional array in JS
所以我目前正在制作一些脚本,它将接受 0 到 3999 之间的值并输出罗马数字作为数字。出于某种原因,在调用我的二维数组时,我最终得到 undefined
function romanConverter() {
var romanOutput;
var enteredNum = prompt('What number would you like converted between 1 and 3999?');
var romanNum = [
['', 'M', 'MM', 'MMM'], // Thousands place
['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'], // Hundreds place
['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'], // These are for the tens place
['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'] // Ones place
];
if (parseInt(enteredNum) > 3999) {
alert("I'm sorry that's not a valid entry");
enteredNum = prompt('What number would you like converted between 1 and 3999?');
} else {
while (enteredNum.length < 4) {
enteredNum = '0' + enteredNum;
}
for (var i = 0; i <= enteredNum.length; i += 1) {
var currentNum = parseInt(enteredNum.charAt(i));
romanOutput += romanNum[i][currentNum];
}
}
document.write(romanOutput);
}
romanConverter();
我总是得到 TypeError: romanNum[i] is undefined
我真的卡住了,需要一些帮助。
这是那些总是让你用头撞墙一段时间的偷偷摸摸的小错误之一。
尝试将最终的 for
循环更改为以下内容:
for (var i = 0; i < enteredNum.length; i += 1) { // etc...
您希望严格小于 - 不小于或等于。否则,您最终会评估 "05".charAt(2);
为了防止其输出是 undefined
后跟转换后的罗马数字,您还需要更改显示
的行
var romanOutput;
到
var romanOutput = "";
所以我目前正在制作一些脚本,它将接受 0 到 3999 之间的值并输出罗马数字作为数字。出于某种原因,在调用我的二维数组时,我最终得到 undefined
function romanConverter() {
var romanOutput;
var enteredNum = prompt('What number would you like converted between 1 and 3999?');
var romanNum = [
['', 'M', 'MM', 'MMM'], // Thousands place
['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'], // Hundreds place
['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'], // These are for the tens place
['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'] // Ones place
];
if (parseInt(enteredNum) > 3999) {
alert("I'm sorry that's not a valid entry");
enteredNum = prompt('What number would you like converted between 1 and 3999?');
} else {
while (enteredNum.length < 4) {
enteredNum = '0' + enteredNum;
}
for (var i = 0; i <= enteredNum.length; i += 1) {
var currentNum = parseInt(enteredNum.charAt(i));
romanOutput += romanNum[i][currentNum];
}
}
document.write(romanOutput);
}
romanConverter();
我总是得到 TypeError: romanNum[i] is undefined
我真的卡住了,需要一些帮助。
这是那些总是让你用头撞墙一段时间的偷偷摸摸的小错误之一。
尝试将最终的 for
循环更改为以下内容:
for (var i = 0; i < enteredNum.length; i += 1) { // etc...
您希望严格小于 - 不小于或等于。否则,您最终会评估 "05".charAt(2);
为了防止其输出是 undefined
后跟转换后的罗马数字,您还需要更改显示
var romanOutput;
到
var romanOutput = "";