0

私はオブジェクトの配列を持っています。私のオブジェクトには、参照としてその中にタイトルがあります。オブジェクトの配列をタイトルのアルファベット順に並べ替える必要があります。

以下は、この目標を達成しようとして、私が遊んできたものです。例として、配列オブジェクトのタイトル参照をインデックス 0 として格納しました。インデックス 1 には、並べ替えられた配列の結果と照合するためだけに ID 参照を格納しました。

私がフラッシュから取得している最後の出力は、まったく意味をなさないような奇妙な方法で並べられています。助けてください!私は、同じ目標を達成するためのさまざまな方法を受け入れます。

//This is an example list of my objects, and their test titles.

var obj = Array("ants", 24);
var obj2 = Array("cants", 29);
var obj3 = Array("xants", 35);
var obj4 = Array("bants", 80);

//Hear I assign each object to an array
var test = Array(obj, obj2, obj3, obj4);

//I create 2 arrays. 1 to store the titles in, and 1 for the object itself.
var alpha_sort = Array();
var obj_index = Array();

for(var i in test){//loop through all properties
    alpha_sort.push(test[i][0]);
    obj_index.push(test[i]);
}

trace('----- Display unsorted list ------');

for(var i in alpha_sort){//loop through all properties
    trace(i+' - '+alpha_sort[i]);
}

trace('----- Display sorted list ------');

alpha_sort.sort(2);
for(var i in alpha_sort){//loop through all properties
    trace(i+' - '+alpha_sort[i]+ ' - '+obj_index[i][1]);
}

出力は次のとおりです。

----- Display unsorted list ------
3 - ants
2 - cants
1 - xants
0 - bants
----- Display sorted list ------
2 - bants - 29
1 - cants - 35
0 - xants - 80
3 - ants - 24
4

1 に答える 1

3

これを行うには、配列値を (部分配列ではなく) オブジェクトに変換してsortOnメソッドを使用するか、カスタムの並べ替え関数を作成します。

事前にお勧めします: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/2/help.html?content=00000751.html

var test = Array({title: "ants", value: 24}, {title: "cants", value: 29},{title: "xants", value: 35});

test.sortOn("title");

カスタムソート機能を使用するには:

test.sort(sortTitle);

function sortTitle(a, b):Number {
    if (a[0] < b[0]) {
    return -1;
    } else if (a[0]>a[0]) {
    return 1;
    } else {
    return 0;
    }
}
于 2012-12-03T19:22:13.607 に答える