【问题标题】:How do I fix the undefined result I keep getting from this?如何修复我不断得到的未定义结果?
【发布时间】:2021-11-04 08:28:42
【问题描述】:

所以我正在做 HackerRank superDigit 挑战,尽管我对所有非正式测试用例都有正确的值,但输出框显示结果未定义。 我并没有真正了解 undefined 的全部内容,或者具有值的变量如何返回为 undefined。

function superDigit(n, k) {
    // Write your code here

    var nArr = [];
    
    for(let i = 0; i < n.length; i++)
    {
        nArr.push(n[i]);
    }
    
    console.log('nArr: ' + nArr);
    
    var nComb = 0;
    for(let i = 0; i < nArr.length; i++)
    {
        nComb += parseInt(nArr[i]);
    }
    console.log('nComb: ' + nComb);
    
    var nMult = nComb *= k;
    console.log('nMult: ' + nMult);
    console.log('');
    
    if(nMult < 10)
    {
        return nMult;
    }
    else
    {
        superDigit(nMult.toString(),1);
    }
}

【问题讨论】:

  • 很抱歉,这里有很多错误,我不知道从哪里开始。即使是最简单的测试用例 (superDigit(1)) 也会陷入无限循环。
  • @RoToRa 只是为了确定,您是否以superDigit(1) 运行它?不像superDigit('1',kValue)
  • superDigit(1) 因为任务就是这么说的。
  • @RoToRa 请填写我缺少的内容...该函数的参数是n k ,可以看到函数时被定义为。 superDigit('1', kValue) 将是您调用该函数的方式。调用superDigit(1) 时,您不仅缺少一个参数,而且还使用了一个数字,而您应该使用一个字符串。

标签: javascript undefined


【解决方案1】:

您可能还想返回superDigit 结果。所以在递归调用superDigit的时候,加上return语句。我还清理了console.log 调用,使其更具可读性。

function superDigit(n, k) {

    var nArr = [];
    
    for(let i = 0; i < n.length; i++)
    {
        nArr.push(n[i]);
    }
    
    var nComb = 0;
    for(let i = 0; i < nArr.length; i++)
    {
        nComb += parseInt(nArr[i]);
    }
    
    var nMult = nComb *= k;
    console.log('nMult:', nMult, 'nArr:', nArr, 'nComb:', nComb);
    
    if(nMult < 10)
    {
        return nMult;
    }
    else
    {
        return superDigit(nMult.toString(),1);
    }
}

document.getElementById('result').innerText = superDigit("200", 20);
<html>
<body>
<p id="result"></p>
</body>
</html>

【讨论】:

  • 效果很好,谢谢!一直在寻找为什么我在有值的变量上没有定义,这就是为什么我有所有这些控制台日志。同样的原因我也没有在这里使用像split() 这样的操作。你的描述对我来说给return 带来了更多的意义。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 2015-05-16
  • 2020-10-05
  • 2021-04-11
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多