2011-03-25 56 views
0

我從HTTPService調用其中的XML如下所示導出一個ArrayCollection:Adob​​e Flex的/的Actionscript - 陣列收集的最小值最大值

<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的每個元素是一個數據對象嗎?每個數據對象都有三個標籤和三個高度嗎? – JeffryHouser 2011-03-25 20:21:10

+0

我有一個ArrayCollection中的數據。我的ArrayCollection的每個元素都是一個數據對象。對不起,我對結構不太清楚。數據是父母;只有一個數據,每個「記錄」都包含一個標籤和高度。我不知道這是否更清楚。 – user677325 2011-03-25 21:03:05

+0

@ user677325我不理解,也許是因爲我的經驗不足(使用XML)。在你的樣本中,'data'標籤有三個標籤子和三個高度。那麼,給定這個數據結構,你最終會得到一個包含一個元素的ArrayCollection?但是,我不確定你將如何訪問它;因爲data.label會返回哪個值? – JeffryHouser 2011-03-25 21:27:10

回答

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;在循環中遍歷集合從我到長度if(minValue currentValue)maxValue = currentValue;另外要注意,如果你使用排序,你可能需要parseFloat如果對象是字符串,所以它不會按字母排序。 – shaunhusain 2011-03-25 20:49:36

+0

@shaunhusain,通過'ArrayCollection'手動循環比使用'Sort'更有效率?我從來沒有比較過,看哪個更好。由於'Sort'是一種本地方法,我一直認爲它會被優化或比常規的'for'循環更高效。儘管如此,仍然可以使用'parseFloat'。我認爲身高已經被輸入爲數字。 – 2011-03-25 21:25:23

+0

工作!謝謝 – user677325 2011-03-25 22:43:45

1

你已經有數據存儲在ArrayCollection中嗎? 如果是這樣,請使用調試器查看集合的結構。 之後,它應該像循環收集並找到最小和最大值一樣簡單。如果數據類似於myAC [0] ['height'],myAC [1] ['height']等,則不能使用數學方法。

+1

這是我會推薦的方法,儘管我不確定數據結構是什麼。 – JeffryHouser 2011-03-25 21:27:48

+0

就像我,但調試器非常出色。 – Francisc 2011-03-26 07:55:07