1

我有这个 javascript 代码:http: //jsfiddle.net/MvWV7/5/

我想要实现的是用户应该从 1 开始填充输入。在用户输入 1 之后,下一个值必须是 2(不是 nanother 数字)等等。

我正在尝试通过这样做来填充数组中的输入值(如小提琴所示):

var ary = [];   
$(".activity_order").not(self).each(function(t) {ary.push(this.value);})

但是当我这样做时

ary.max()

我明白了

Uncaught TypeError: Object ,,,,,,,, has no method 'max' 

在控制台中,ary.max()如果没有数字,我会得到 0

更新

我的错,我在 jsfiddle 中使用谷歌控制台,我开始在里面查找数组方法。当我做 ary.max() 它给出 0

4

5 回答 5

3

您大概是[].max在 jsfiddle 域的控制台中输入内容。注意输出:

function () {
    return Math.max.apply(null, this); // 'this' is your array
}

这里的原因是 jsfiddle 域上的代码修改了原型Array以包含该max方法。它被映射到Math.max方法,并且本身并不驻留在Array对象本身或其原型上。

于 2013-03-27T18:48:59.007 回答
0

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

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

var m = Math.max.apply(null, ary);
于 2013-03-27T18:47:45.440 回答
0

数组没有max方法。但是Math.max你可以使用它。

var m = Math.max.apply(0, ary);

你不能这样称呼它的原因Math.max(ary)是它Math.max接受一系列值而不是数组。调用 using apply,将第二个数组参数转换为参数序列。

于 2013-03-27T18:48:01.320 回答
0

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

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

这已经在这里讨论过:JavaScript: min & max Array values?

于 2013-03-27T18:48:27.680 回答
0

数组对象本身没有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 );
  });
}

这是添加了此方法的您的代码的工作分支。

于 2013-03-27T18:49:08.840 回答