【问题标题】:Cannot printout string length in Javascript无法在 Javascript 中打印输出字符串长度
【发布时间】:2021-02-01 00:40:35
【问题描述】:

我今天遇到了一个很奇怪的问题,需要在这里寻求帮助。

所以我有以下功能,带有一些调试打印输出:

function allLongestStrings(inputArray) {
    console.log(inputArray);
    inputArray.sort((a,b)=> {
        return b.length-a.length;
    });
    
    console.log(inputArray);
    console.log(inputArray.length)
    console.log(inputArray[0].length)
    console.log(typeof(inputArray[1]))
    // console.log(inputArray[1].length)
}

这段代码sn-p的控制台输出为:

[ 'aba', 'aa', 'ad', 'vcd', 'aba' ]
[ 'aba', 'vcd', 'aba', 'aa', 'ad' ]
5
3
string

当我取消注释最后一行(我试图获取字符串数组中字符串的长度)时,出现以下错误:

TypeError: Cannot read property 'length' of undefined
    at allLongestStrings (main.js on line 15:33)
    at _runwjbyf (main.js in the pre-written template:28)
    at getUserOutputs (main.js in the pre-written template:36)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

这一定是一些愚蠢的编码错误,但谁能告诉我这是什么?

【问题讨论】:

  • 请注意您的 .length 如何与数组及其键不一致。删除多余的括号,它应该可以工作console.log(inputArray[1].length)
  • 不,它没有,那个括号不存在,而是作为一个绝望的手段添加的。 :( 我已经修改了代码。
  • 这是您遇到此问题的确切代码吗? bcz 问题中的 sn-p 按预期工作
  • 实际上,我正在研究这个:app.codesignal.com/arcade/intro/level-3只有一个函数...smooth sailing => 9
  • @lastr2d2,可能是那个网站使用的编译器的问题,我在repl.it/languages/nodejs跑了,没有问题。

标签: javascript arrays string


【解决方案1】:

根据您的屏幕截图,您的代码在测试用例中失败
allLongestStrings(['aa'])

在这种情况下,inputArray 只有一个元素,因此 inputArray[1] 未定义。为了使您的实现健壮,您可能需要进行一些参数检查。

例如,如果 inputArrayundefined 或者不是数组怎么办。 或者如果 inputArray 被保证是一个数组,你可以删除你的调试语句,因为你的代码的其他部分有效。

【讨论】:

    【解决方案2】:

    尝试将 inputArray[i] 存储在一个变量中,然后尝试控制该 variable.length

    【讨论】:

    • 同样的错误。我添加了` const targetArray = inputArray[1]; console.log(typeof(targetArray)); console.log(targetArray.length);`
    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多