因此,我目前正在编写一些脚本,该脚本将使用0到3999之间的值,并抽出该数字的罗马数字。由于某种原因,当调用二维数组时,我最终变得不确定
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 = "";
关于javascript - 在JS中调用二维数组时不断变得不确定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31226057/