0

我有一个对象数组。我的对象里面有它的标题作为参考。我需要按标题按字母顺序对我的对象数组进行排序。

下面是我一直在玩的东西,试图实现这个目标。例如,我将数组对象上的标题引用存储为索引 0。在索引 1 上,我存储了一个 ID 引用,只是为了检查排序数组的结果。

我从 flash 中得到的最后一个输出是以一种奇怪的方式排序的,这对我来说完全没有意义。请帮忙!我对实现同一目标的不同方法持开放态度。

//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 回答