开发者问题收集

Hackerrank 算法挑战问题 - 在 hackerrank 环境 (node) 中显示类型错误,但在浏览器控制台上运行良好。哪里错了?

2019-01-12
682
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)

有什么解释吗?

2个回答

该函数仅接受 一个 参数,而不是两个。看看它是如何被调用的:

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

CertainPerformance
2019-01-12

它仅需要一个参数,而不是两个。

function birthdayCakeCandles(ar) {


}  // function from hackerRank question

因此您需要删除 n 。由于您有 ar 作为第二个参数,因此它结果为未定义,因为在函数调用中,您的情况下只传递了一个参数,它将映射到 n

Code Maniac
2019-01-12