Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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:数组的最大值不工作_Javascript_Jquery - Fatal编程技术网

JavaScript:数组的最大值不工作

JavaScript:数组的最大值不工作,javascript,jquery,Javascript,Jquery,我有以下javascript代码: 我试图实现的是,用户应该从1开始填充输入。用户键入1后,下一个值必须是2(不是另一个数字),依此类推 我试图通过这样做来填充数组中的输入值(如fiddle所示): 但当我这么做的时候 ary.max() 我明白了 在控制台中执行ari.max()操作时,如果没有数字,则得到0 更新 我的错是,我在JSFIDLE中使用了google控制台,我开始查找里面的数组方法。 当我执行ari.max()时,它给出了0一个数组没有.max()方法。如果要创建一个数组,则必

我有以下javascript代码:

我试图实现的是,用户应该从1开始填充输入。用户键入1后,下一个值必须是2(不是另一个数字),依此类推

我试图通过这样做来填充数组中的输入值(如fiddle所示):

但当我这么做的时候

ary.max()
我明白了

在控制台中执行
ari.max()
操作时,如果没有数字,则得到0

更新

我的错是,我在JSFIDLE中使用了google控制台,我开始查找里面的数组方法。
当我执行ari.max()时,它给出了0

一个数组没有
.max()
方法。如果要创建一个数组,则必须编写或获取一个函数来迭代数组并找到数组中的最大值

事实证明,您可以使用
Math.max()
函数来解决以下问题:

var m = Math.max.apply(null, ary);
数组没有
max
方法。但是有
Math.max
可以用于此

var m=Math.max.apply(0,ari)


之所以不能像
Math.max(ary)
那样调用它,是因为
Math.max
接受一系列值而不是数组。使用
apply
调用,将第二个数组参数转换为一系列参数。

问题在于
.max
.min
不存在。它们不是方法,就像抛出的错误所说的那样

您必须修改数组原型,以便按照您提供的语法执行某些操作


这里已经讨论过了:

您可能正在JSFIDLE域的控制台中键入
[].max
。注意输出:

函数(){
返回Math.max.apply(null,this);//“this”是您的数组
}
这里的原因是JSFIDLE域上的代码修改了
Array
的原型,以包含
max
方法。它被映射到
Math.max
方法,并且不是本机驻留在
Array
对象本身或其原型上。

在Array对象中本机没有
max()
min()
方法。您应该在尝试使用它之前添加它们

Array.prototype.min = function () {
  return this.reduce(function (p, v) {
    return ( p < v ? p : v );
  });
}

Array.prototype.max = function () {
  return this.reduce(function (p, v) {
    return ( p > v ? p : v );
  });
}
Array.prototype.min=函数(){
返回此.reduce(函数(p,v){
回报率(pv?p:v);
});
}

此处添加了此方法。

可能的重复:
Math.max()
不将数组作为参数。它接受一个或多个单独的参数。
Math.max
是一个函数,因此它的原型具有
apply
方法,该方法实际上接受数组@jfriend00您在技术上是错误的。“我在这个基础上投票,”乔纳森·桑普森纠正了答案。但是我一直认为,
apply
只在函数内部指定
的值。@JonathanSampson-正如你在我提供的答案中所看到的,有一种方法可以将
.apply()
Math.max()
一起使用,但这会将数组转换为Math.max确实接受的连续参数。你不能像这样传递数组:
Math.max(arr)
这就是我所说的,这就是为什么这个答案是错误的。
.apply()
都设置了
this
的值,并将数组转化为传递给函数的连续参数,这就是你需要的。是的,这就是问题所在。实际上,根据我的问题,你的回答是正确的:D
var m = Math.max.apply(null, ary);
Array.prototype.min = function () {
  return this.reduce(function (p, v) {
    return ( p < v ? p : v );
  });
}

Array.prototype.max = function () {
  return this.reduce(function (p, v) {
    return ( p > v ? p : v );
  });
}