![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Есть массив объектов.
У объекта есть поля целочисленные. Нужно отсортировать вначале по sortIndex1, если sortIndex1 одинаковый то сортировать по sortIndex2, если sortIndex2 одинаковый, то сортировать по sortIndex3.
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
sort + function.
var arr:Array = new Array();
function sort(a:Object, b:Object):int {
if (a.index0 == b.index0) {
if (a.index1 == b.index1) {
return a.index2 > b.index2 ? 1 : -1;
} else {
return a.index1 > b.index1 ? 1 : -1;
}
} else {
return a.index0 > b.index0 ? 1 : -1;
}
return 0;
}
for (var i:uint = 0;i < 15;i+=1) {
var o:Object = new Object();
o.index0 = Math.floor(Math.random()*4);
o.index1 = Math.floor(Math.random()*4);
o.index2 = Math.floor(Math.random()*4);
o.toString = function():String {
return '['+this.index0+','+this.index1+','+this.index2+']';
}
arr.push(o);
}
arr.sort(sort);
trace(arr.join('\n'));
Последний раз редактировалось etc; 26.03.2008 в 15:02. |
|
|||||
|
ну, на вскидку вот такой кривой вариант (возможно не сработает):
var arr:Array = new Array();
function addElement(p1:int, p2:int, p3:int) {
var o:Object = new Object();
o.sortIndex1 = p1;
o.sortIndex2 = p2;
o.sortIndex3 = p3;
o.sortHex = p1.toString() + p2.toString() + p3.toString();
arr.push(o);
}
for(var i:int=0; i<10; i++){
addElement(Math.floor(Math.random()*100), Math.floor(Math.random()*100), Math.floor(Math.random()*100));
}
for(i=0; i<10; i++){
trace(arr[i].sortIndex1+" "+arr[i].sortIndex2+" "+arr[i].sortIndex3);
}
trace("----------------------");
arr.sortOn("sortHex");
for(i=0; i<10; i++){
trace(arr[i].sortIndex1+" "+arr[i].sortIndex2+" "+arr[i].sortIndex3);
}
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
|
спасибо
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Забыли про sortOn (respect to BlooDHounD):
var arr:Array = new Array();
for (var i:uint = 0;i < 15;i+=1) {
var o:Object = new Object();
o.index0 = Math.floor(Math.random()*4);
o.index1 = Math.floor(Math.random()*4);
o.index2 = Math.floor(Math.random()*4);
o.toString = function():String {
return '['+this.index0+','+this.index1+','+this.index2+']';
}
arr.push(o);
}
arr.sortOn(["index0", "index1", "index2"]);
trace(arr.join('\n'));
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|