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)
有什么解释吗?
答案 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