2011-03-26 88 views

回答

10

使用apply

Math.min.apply(null,[1,2,3]); //=> 1 

From devguru

Function.apply(thisArg[, argArray]) apply方法允许你调用一个 功能,并指定关键字 这将参照范围内什么该功能的 。 thisArg参数 应该是一个对象。在被调用函数的 上下文中, 这将引用thisArg。应用方法的第二个参数 是 数组。将该数组的元素 作为参数传递给被调用的 函数。 argArray 参数可以是数组 字面值,也可以是函数的已弃用参数 属性。

在这种情况下的第一个参数是不重要的(因此:空),第二个是,因为该阵列被作为参数传递给Math.min。所以这就是这里使用的'技巧'。

+0

这是迄今为止最简单的解决方案,但它是如何工作的? – 2011-03-26 11:57:44

+0

+1非常好的一个。 – vbence 2011-03-26 11:58:27

0

不要把它传递一个数组(这是不是在这种情况下,数字或NaN),只是通过它将数字作为函数的参数。就像这样:

Math.min(1, 2, 3) 
+0

但我必须要通过这些数组中的元素.. – 2011-03-26 11:54:55

+0

@compile然后使用类似vbence建议。 – 2011-03-26 11:56:45

+0

@编译粉丝:你为什么要这样做?该函数期望数字作为参数,而不是数组。如果你必须将一个数组传递给一个函数,那么我想你可以写一个'Math.min()'的包装器,它接受一个数组并在数组的元素中调用'Math.min()'之前分解它。 (甚至检查输入以确保它们都是数字。) – David 2011-03-26 11:57:53

1
Math.min(1, 2, 3) 
1 

因为,[1,2,3]不能转换为数字,则返回NaN

更多:Mozilla Reference

1

你必须通过数组进行迭代。 AFAIK JS中没有array_min

var i, min = arr[0]; 
for (i=1; i<arr.length; i++) 
    min = Math.min(min, arr[i]); 
相关问题