Hackerrank 算法挑战问题 - 在 hackerrank 环境 (node) 中显示类型错误,但在浏览器控制台上运行良好。哪里错了?
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 环境(节点)中运行它时,它会引发此错误:
运行时错误:
Error (stderr) solution.js:30 for (let i = 0; i < ar.length; i++) {
TypeError: Cannot read property 'length' of undefined at birthdayCakeCandles (solution.js:30:28)
有什么解释吗?
该函数仅接受 一个 参数,而不是两个。看看它是如何被调用的:
https://www.hackerrank.com/challenges/birthday-cake-candles/problem
let result = birthdayCakeCandles(ar);
因此,如果您定义
birthdayCakeCandles
来接受第二个参数(或第一个参数之外的任何其他参数),它们将始终为
undefined
。
不确定您的
n
参数是什么,但您应该将其删除:
function birthdayCakeCandles(ar) {
并且您的代码通过了所有测试用例。
阅读“函数描述”:
Function Description
Complete the function birthdayCakeCandles in the editor below. It must return an integer representing the number of candles she can blow out.
birthdayCakeCandles has the following parameter(s):
ar: an array of integers representing candle heights
它仅需要一个参数,而不是两个。
function birthdayCakeCandles(ar) {
} // function from hackerRank question
因此您需要删除
n
。由于您有
ar
作为第二个参数,因此它结果为未定义,因为在函数调用中,您的情况下只传递了一个参数,它将映射到
n