Hackerrank算法挑战问题-在hackerrank环境(节点)中显示类型错误,但在浏览器控制台上工作正常。怎么了?

时间:2019-01-12 06:06:36

标签: javascript algorithm

function birthdayCakeCandles(n, ar) {
let max = 0;
for(let i = 0; i < ar.length; i++) {
    if(ar[i] > max) {
        max = ar[i];
    }
}
let count = 0;
for(let i = 0; i < ar.length; i++) {
    if(ar[i] === max) {
        count++;
    }
}
return count;
}

这可以在浏览器控制台上完美运行,但是当我在Hackerrank环境(节点)中运行它时,会引发此错误:

运行时错误:

  

错误(stderr)   solution.js:30       for(让i = 0; i      

TypeError:无法读取未定义的属性“ length”       在BirthdayCakeCandles(solution.js:30:28)

有什么解释吗?

2 个答案:

答案 0 :(得分:2)

该函数仅接受一个参数,而不接受两个。查看它的调用方式:

https://www.hackerrank.com/challenges/birthday-cake-candles/problem

let result = birthdayCakeCandles(ar);

因此,如果您定义birthdayCakeCandles来接受第二个参数(或除第一个以外的任何其他参数),它们将始终为undefined

不确定您的n参数是什么,但是您应该删除它:

function birthdayCakeCandles(ar) {

并且您的代码通过了所有测试用例。

阅读“功能说明”:

  

功能说明

     

在下面的编辑器中完成函数BirthdayCakeCandles。它必须返回一个表示她可以吹熄的蜡烛数量的整数。

     

birthdayCakeCandles具有以下参数:

     

ar:代表蜡烛高度的整数数组

答案 1 :(得分:1)

期望只有一个参数而不是两个。

function birthdayCakeCandles(ar) {


}  // function from hackerRank question

因此,您需要删除n。由于您将ar作为第二个参数,因此它是未定义的,原因是函数调用中仅传递了一个参数,该参数将映射到n