假设我有一个数字数组: [2,3,3,4,2,2,5,6,7,2]
[2,3,3,4,2,2,5,6,7,2]
在该数组中找到最小值或最大值的最佳方法是什么?
现在,为了获得最大值,我正在遍历数组,并将变量重设置为大于现有值的值:
var myArray:Array /* of Number */ = [2,3,3,4,2,2,5,6,7,2]; var maxValue:Number = 0; for each (var num:Number in myArray) { if (num > maxValue) maxValue = num; }
这似乎并不是执行此操作的最佳方法(我尽可能尝试避免循环)。
其他所有人的理论答案都很好,但是我们要务实。ActionScript提供了您需要的工具,因此在这种情况下甚至不必编写循环!
首先,请注意,Math.min()并且Math.max()可以接受任意数量的参数。同样,了解对象apply()可用的方法也很重要Function。它允许您使用来将参数传递给函数Array。让我们充分利用两者:
Math.min()
Math.max()
apply()
Function
Array
var myArray:Array = [2,3,3,4,2,2,5,6,7,2]; var maxValue:Number = Math.max.apply(null, myArray); var minValue:Number = Math.min.apply(null, myArray);
最好的部分是:“循环”实际上是使用本机代码(在Flash Player内部)运行的,因此它比使用纯ActionScript循环搜索最小值或最大值要快。