2011-05-05 117 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);