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

그러나 분명히 옳지 않다. 나는 응답이 일종의 분리 된 함수를 실행하고이 함수에 값을 리턴하는 것을 포함하는 감각이 있지만 나는 아직 구문을 제대로 이해하지 못했다. 이 배열의 끝에 도달 할 때까지 어떤이가하는 것입니다 것은 배열의 첫 번째 요소의 최대 수를 초기화

var max_number:Number = memberClips[0]; 

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

을 다음 배열의 모든 요소를 ​​순환 :

답변

2

귀하의 aproach이 모든 잘못되지 않습니다, 당신은이 작업을 수행 할 수 있습니다

// 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; 
} 

이도 작동이 빈 상태 (empty)의 배열이있는 경우로보고 섹시하지

1

대신이 시도 할 수 있습니다 . 그러면 원하는 최대 숫자가됩니다. 인덱스 변수 i은 첫 번째 요소를 자체와 비교할 필요가 없기 때문에 1로 초기화됩니다. 이 코드는 배열에 하나 이상의 요소가 있다고 가정합니다.

+0

감사합니다 - 나는 실제로 여기 꽤 좋은 방법을 발견 http://stackoverflow.com/questions/424800/what-is-the-best-way-to-get-the-minimum-or- 최대 값 배열 수 – mheavers

1

더 압축 된 버전 (이 -Infinity을 반환) 그것은 루비에 있지만 작동합니다.

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);