Javascript typeof()显示数字时获取NaN错误
所以我编写了这个非常简单的函数,并试图返回它的结果,但得到的结果是Javascript typeof()显示数字时获取NaN错误,javascript,Javascript,所以我编写了这个非常简单的函数,并试图返回它的结果,但得到的结果是NaNerror 这是我目前的代码: 函数m(c){ 返回Math.max(c)-this.length-1; } document.getElementById('app').innerHTML=m([1,4,6,8,43,2]) 属于编号类型: console.log(typeof NaN)您必须使用Math.max.apply(null,c)。 max接受的是数字列表,而不是数组。这就是为什么必须使用apply将数组用
NaN
error
这是我目前的代码:
函数m(c){
返回Math.max(c)-this.length-1;
}
document.getElementById('app').innerHTML=m([1,4,6,8,43,2])代码>
属于编号类型:
console.log(typeof NaN)
您必须使用Math.max.apply(null,c)
。
max接受的是数字列表,而不是数组。这就是为什么必须使用apply将数组用作参数列表。因为此
上下文未与该数组绑定,您可以按如下方式绑定它,此外,您需要对数组排序并获取最大值
函数m(){
var[max]=this.sort((a,b)=>b-a);
返回max-this.length-1;
}
document.getElementById('app').innerHTML=m.bind([1,4,6,8,43,2])代码>
此长度未定义。用c.length替换它
另外,math.max并不像你想的那样工作。
如果您查看,您可以看到他们建议对阵列使用reduce函数
但是,如果数组的元素太多,spread(…)和apply都将失败或返回错误的结果,因为它们试图将数组元素作为函数参数传递。有关更多详细信息,请参阅使用应用和内置函数。reduce解决方案没有这个问题
简而言之
函数m(c){
var max=c.reduce(函数(a,b){
返回Math.max(a,b);
});
返回最大值-c.length-1;
}
document.getElementById('app').innerHTML=m([1,4,6,8,43,2])代码>
数学max(c)
应该做什么?这是什么?请加上想要的结果。投票人能解释一下吗?reduce函数实际上来自:Mdn docs:但是,如果数组中的元素太多,spread(…)和apply都将失败或返回错误的结果,因为它们试图将数组元素作为函数参数传递。有关更多详细信息,请参阅使用应用和内置函数。reduce解决方案没有此问题。排序
以获得最大值.bind
以解决滥用此
?我建议改变OP的方法,而不是让他们的黑客“工作”。