2009-11-13 93 views
0

所以,我有ID和計票的二維陣列 - voteArray [I] [0] = ID,voteArray [I] [1] =計票排序在AS3二維陣列

我想要的前3投票項目以不同的顏色顯示,所以我有第二陣列 - sortArray。

然後當我diplay結果我打算使用sort數據中的數據來找出voteArray數據應該有什麼顏色。 voteArray中的數據應按照ID的順序排列。

所以這是我做的:

sortArray = voteArray; 
sortArray.sortOn("1",Array.NUMERIC); 

這打亂了在voteArray數據的排序。我究竟做錯了什麼?

回答

1
public function mySort(a:Array, b:Array):Number { 
    if(a[1] <= b[1]) { 
    return 1; 
    } 
    return -1; 
} 

sortArray.sort(mySort); 
+1

+1以獲得簡潔的解決方案。不要忘記'var sortArray:Array = voteArray.slice(0);'雖然。文檔 - http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Array.html#sort%28%29 – greggreg 2009-11-13 15:59:01

1

如果你說:

sortArray = voteArray; 

你只分配voteArray到sortArray參考。 所以在那個語句之後,你的兩個變量都指向同一塊內存。

我有點驚訝閃光燈Array類不具有複製功能或拷貝構造函數

方式,你可以複製一個數組:

var sortArray:Array = voteArray.filter(function(){return true;}); 

var sortArray:Array = voteArray.slice(0); 
+0

謝謝!現在我只有一個問題... sortArray.sortOn(「1」,Array.DESCENDING | Array.NUMERICAL); 返回此: 6,1 2,1 3,1 4,1 5,2 1,5 7,1 8,2 9,1 10,1 – Frode 2009-11-13 15:24:48

+0

我不是當然,sortOn期望一個對象,而不是數組索引。所以如果你改變你的數據結構voteArray [i] = {「id」:2,「voteCount」:2}把它在一個對象中,然後調用voteArray.sortOn(「voteCount」,...)它應該工作。 – Les 2009-11-13 16:04:45