2011-05-05 72 views
2

可能重复:
What is the best way to get the minimum or maximum value from an Array of numbers?闪光AS3()函数

嗨 - 我试图使用闪光灯的Math.max()功能找到一组数字中最高的一个。通常,这些是通过逗号分隔的数字字符串输入的,但我需要通过数组中的一系列数字循环。这是什么适当的语法?我试过了:

var maxMemberWidth = int(Math.max(
    for (var k=0;k<memberClips.length;k++){ 
     memberClips[i].memeberWidth; 
    } 
)); 

但这显然是不正确的。我有一种感觉,答案涉及运行某种单独的函数并将值返回给此函数,但我还没有完全明白语法。

回答

2

您的形式给出了并不全是错的,你可以这样做:

// note the apply in the next line! 
var maxMemberWidth:int = int(Math.max.apply(null, AllMembersWidth())); 

... 

private function AllMembersWidth():Array 
{ 
    var widths:Array = []; 
    for (var k:int = 0; k < memberClips.length; k++) 
     widths[k] = memberClips[k].memeberWidth; 
    return widths; 
} 

这样,即使你有一个空数组(它返回-Infinity

1

可以代替试试这个:

var max_number:Number = memberClips[0]; 

for(var i:int = 1; i < memberClips.length; i++) 
{ 
    max_number = Math.max(max_number, memberClips[i]); 
} 

这样做是最大数量初始化为你的数组的第一个元素,然后通过你的阵列中的所有元素循环,直到它到达数组末尾。那么你将拥有你正在寻求的最大数量。索引变量i已初始化为1,因为您不需要将第一个元素与自身进行比较。你应该注意到这段代码还假定你的数组中至少有一个元素。

+0

谢谢 - 我其实只是找到了一个不错的方法,在这里:http://stackoverflow.com/questions/424800/what-is-the-best-way-to-get-the-minimum-or-最大值从 - 一个阵列-的号码 – mheavers 2011-05-05 19:21:54

1

更精简版,并不像性感看上去这将是红宝石,但它的作品。

var widths:Array = clips.map(function(o:*, i:int, a:Array):* { return o.width; }); 

var max:Number = Math.max.apply(null, widths); 
var min:Number = Math.min.apply(null, widths);