我为什么要拉错误? array.push课程工作

时间:2015-06-11 20:39:35

标签: arrays

Book有包含将摄氏度转换为华氏度的ff代码的页面,我们已被要求重写/简化它。



function convertToCentigrade(degFahren)
{
    var degCent;
    degCent = 5/9 * (degFahren - 32);
    return degCent;
}

var degFahren = new Array(212, 32, -459.15);
var degCent = new Array();
var loopCounter;

for (loopCounter = 0; loopCounter <= 2; loopCounter++)
{
    degCent[loopCounter] = convertToCentigrade(degFahren[loopCounter]);
}

for (loopCounter = 2; loopCounter >= 0; loopCounter-- )
{
    document.write(“Value “ + loopCounter + “ was “ + 
        degFahren[loopCounter] + “ degrees Fahrenheit”);
    document.write(“ which is “ + degCent[loopCounter] + 
        “ degrees centigrade<br />”);
}
&#13;
&#13;
&#13;

我的版本:

&#13;
&#13;
var degFar = [212, 32, -459.15];
var degCent = [];
            
function convert(input) {
    result = (5/9 * (input - 32));            
    return result;
}
            
for (i = 0; j = degFar.length; i <= j; i++) {
    degCent.push(convert(degFar[i]));
    document.write(degCent[i]);
}
&#13;
&#13;
&#13;

我拉错了(显然),但我不明白我做错了什么。

2 个答案:

答案 0 :(得分:0)

degFar有3个元素,但其索引从0开始。

你的阵列是这样的:

[0] 212
[1] 32
[2] -459.15

你试图推动一个不存在的指数[3]。因此,请使用此修改您的循环,请注意我已将i<=j替换为i<j

for (i = 0; j = degFar.length; i < j; i++) {
    degCent.push(convert(degFar[i]));
    document.write(degCent[i]);
}

答案 1 :(得分:0)

您的for循环导致错误。您尝试使用两个变量'j'和'i'。我不确定你要通过使用'j'来完成什么(最重要的是你在尝试将它初始化为degFar.length之前从未声明'j')。

保持你的逻辑,我会摆脱'j' - 你不需要它。删除'j'并使用'i'后应该看起来像这样:

for (i = 0; i < degFar.length; i++) {
 degCent.push(convert(degFar[i]));
 document.write(degCent[i] + "<br>");
}

希望这有帮助。