2011-03-25 3 views
0

나는 XML은 다음과 같이 보이는 HTTPService를 호출에서 파생 된 ArrayCollection 있습니다어도비 플렉스/액션 스크립트 - 배열 컬렉션의 최소 최대

<data> 
    <label>John</label><height>5.5</height> 
    <label>John</label><height>7.2</height> 
    <label>John</label><height>3.2</height> 
</data> 

내가 Math.min를 사용하는 방법을 알고를 배열에 Math.max하지만이 예제에서는 높이의 최소 및 최대를 어떻게 얻을 수 있습니까? 감사!

+0

ArrayCollection이 있습니까? 아니면 XML? ArrayCollection의 각 요소가 데이터 객체입니까? 그리고 각 데이터 객체에는 3 개의 레이블과 3 개의 높이가 있습니까? – JeffryHouser

+0

ArrayCollection에 데이터가 있습니다. 내 ArrayCollection의 각 요소는 데이터 객체입니다. 미안 해요. 구조에 대해 나는 분명하지 않았습니다. 데이터는 부모입니다. 하나의 데이터 만 있고 각 '레코드'는 라벨과 높이를 나타냅니다. 그게 더 명확한 지 모르겠습니다. – user677325

+0

@ user677325 어쩌면 XML에 익숙하지 않기 때문에 이해가 안 될 것 같습니다. 샘플에서 'data'태그에는 세 개의 라벨 하위 요소와 세 개의 높이가 있습니다. 그래서, 데이터 구조가 주어진다면, 당신은 하나의 원소를 가진 ArrayCollection으로 끝날 것입니다. 하지만, 어떻게 접근 할지는 모르겠다. data.label은 어떤 값을 반환할까요? – JeffryHouser

답변

1

높이로 정렬하려면 the ArrayCollection's Sort method을 사용하면됩니다. 그런 다음 ArrayCollection의 첫 번째 및 마지막 레코드에서 높이 값을 가져옵니다.

는 업데이트 : 코드 주석에 서식하기 때문에

내가 shaunhusain의 솔루션을 추가 할 것입니다 최고의 아니다.

public var minValue:int = int.MAX_VALUE; 
public var maxValue:int = -1; 

for each (var o:Object in myArrayCollection) 
{ 
    if (o.height > maxValue) 
    maxValue = o.height; 

    if (o.height < minValue) 
    minValue = o.height; 
} 
+2

이것이 가장 효율적인 솔루션은 아니지만 확실히 간단하고 목표를 달성 할 수 있습니다. 대안으로 목록 전체를 반복 할 수 있으며 단순히 두 가지 비교 및 ​​조건부 할당을 수행 할 수 있으며 정렬보다 약간 더 빨라야합니다. int minValue = -1; int maxValue = int.MAX_VALUE; 루프에서 i에서 length로 반복 집합 if (minValue currentValue) maxValue = currentValue; 또한 정렬을 사용하는 경우 객체가 문자열 인 경우 parseFloat가 필요하므로 사전 순 정렬을 수행하지 않아도됩니다. – shaunhusain

+0

@shaunhusain, 'ArrayCollection'을 수동으로 반복하는 것이'Sort'를 사용하는 것보다 효율적입니다? 나는 어느 쪽이 더 나은지 두 사람을 비교 한 적이 없다. 나는'Sort'가 일반적인'for' 루프보다 최적화되거나 더 효율적일 것이라는 네이티브 메소드이기 때문에 항상 생각 해왔다. 그래도'parseFloat'에 좋은 호출. 높이가 이미 숫자로 입력되었다고 가정했습니다. –

+0

그게 효과가! 감사합니다 – user677325

1

이미 데이터를 ArrayCollection에 저장 했습니까? 그렇다면 디버거를 사용하여 컬렉션의 구조를 확인하십시오. 그런 다음 컬렉션을 반복하면서 최소값과 최대 값을 찾는 것만 큼 간단해야합니다. 데이터가 myAC [0] [ 'height'], myAC [1] [ 'height'] 등일 경우 수학 메서드를 사용할 수 없습니다.

+1

이것은 데이터 구조가 무엇인지 불확실하지만 권장할만한 방식입니다. – JeffryHouser

+0

나는 그렇지만 디버거는 그게 뛰어납니다. – Francisc