Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript typeof()显示数字时获取NaN错误_Javascript - Fatal编程技术网

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的方法,而不是让他们的黑客“工作”。