如@helloflash在his answer大約循環通過所述一個對象,並且根據Adobe's definition of associative array
(這是對象類的一個實例):
關聯數組,有時被稱爲散列或地圖,使用鍵,而不是一個數字索引來組織存儲的值。關聯數組中的每個鍵都是用於訪問存儲值的唯一字符串。關聯數組是Object類的一個實例,這意味着每個鍵對應一個屬性名稱。關聯數組是鍵和值對的無序集合。您的代碼不應期望關聯數組的鍵具有特定的順序。
你得到的行爲是正常的,你不能在你的情況下獲得有序的鍵(使用類似的對象)。
如果你不需要鑰匙,你可以使用簡單的數組或矢量在his answer中做@helloflash說。否則,你可以使用對象的數組,像這樣:
var obj:Object, i:int, s:String;
var data_array:Array = [
{key: 'someKeyOne', value: 0},
{key: 'someKeyTwo', value: 1337},
{key: 'someKeyThree', value: 123}
]
for(i = 0; i < data_array.length; i++){
obj = data_array[i];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for (s in data_array) {
obj = data_array[s];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for each (obj in data_array){
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
// all these 3 loops give :
// Key : someKeyOne, Value = 0
// Key : someKeyTwo, Value = 1337
// Key : someKeyThree, Value = 123
或者你可以使用對象,然後整理成一個數組是這樣的:
var data_object:Object = new Object();
data_object.someKeyOne = {index:0, value: 0};
data_object.someKeyTwo = {index:1, value: 1337};
data_object.someKeyThree = {index:2, value: 123};
var tmp_array:Array = sort_obj(data_object);
for(i = 0; i < tmp_array.length; i++){
obj = tmp_array[i];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for (obj in tmp_array) {
obj = tmp_array[obj];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for each (obj in tmp_array){
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
function sort_obj(obj:Object):Array {
var a:Array = [];
for (var key:String in obj) {
a.push({key: key, index: obj[key].index, value: obj[key].value});
}
a.sortOn('index', Array.NUMERIC);
return a;
}
// all these 3 loops give :
// Key : someKeyOne, Value = 0
// Key : someKeyTwo, Value = 1337
// Key : someKeyThree, Value = 123
希望大家可以幫助你。
https://stackoverflow.com/questions/2892450/sorting-an-array-of-objects-in-actionscript-3 – 2014-12-27 15:28:34
請注意我想要一個可以排序的對象。不是一個排序的對象數組。 – user2932566 2014-12-27 15:30:30