Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Сортировка Asort() (http://www.flasher.ru/forum/showthread.php?t=83142)

Odyssus 28.07.2006 10:59

Сортировка Asort()
 
Есть массив
Код:

a[0] = {id:'0', name:'ВИННИЦА',        curr:0,        summa:0};
a[1] = {id:'1', name:'ЛУЦК',        curr:0,        summa:6};
a[2] = {id:'2', name:'ДНІПРОПЕТРОВСК',        curr:0,        summa:6};
a[3] = {id:'10', name:'ДОНЕЦК',        curr:0,        summa:0};

Если сортировать его по возрастанию a.sortOn("id", 16);, то 10 показывает перед 2 (нашел выход ставить 0 перед 1 и 2, тогда нормально, а может можна без дополнительного 0?)
А если просортировать по сумме по убыванию - то как-то непонятно сортирует 2,1,0,10(предполагаю, где одинаковые поля - так оно смотрит другорядно на неймы, а чтобы смотрело на id, если суммы одинаковы?).

iNils 28.07.2006 11:45

Если малой кровью, то просто сделать id не String, а Number
Код:

a[0] = {id:0, name:'ВИННИЦА', curr:0, summa:0};
a[1] = {id:1, name:'ЛУЦК', curr:0, summa:6};
a[2] = {id:2, name:'ДНІПРОПЕТРОВСК', curr:0, summa:6};
a[3] = {id:10, name:'ДОНЕЦК', curr:0, summa:0};


Odyssus 28.07.2006 16:39

А на счет поддерживает сортировку по двум полям (типа если равны два поля - то смотрить второе поле и сортировать по нем), или вручную надо процедурку создавать?

etc 28.07.2006 16:47

http://livedocs.macromedia.com/flash.../00001916.html

Odyssus 28.07.2006 17:01

я видел уже это :-)

Код:

a = new Array();
a[0] = {id:0, name:'ВИННИЦА',        curr:0,        summa:0};
a[1] = {id:1, name:'ЛУЦК',        curr:0,        summa:6};
a[2] = {id:2, name:'ДНІПРОПЕТРОВСК',        curr:0,        summa:6};
a[3] = {id:10, name:'ДОНЕЦК',        curr:0,        summa:0};
a.sortOn(["summa", "id"]);
for(i=0; i<a.length; i++){
    trace(a[i].name + ", " + a[i].id);
}

такой код дает по возрастающей по всем параметрам...
вот я хочу сортирнуть этот массив, чтобы мне сначала по сумме - по убывающей, потом, где суммы одинаковые - второстепенным параметром - id (а айди по возрастающей)
В идеале - должно типа так получится:
Луцк
Днепропетровск
Виница
Донецк

etc 28.07.2006 17:02

Самое время перейти на 8 =)

Odyssus 28.07.2006 17:35

спс за совет, очень благодарен, а по сути ничего не посоветуешь? )))

KidsKilla 28.07.2006 17:40

Цитата:

Сообщение от Odyssus
спс за совет, очень благодарен, а по сути ничего не посоветуешь? )))

в sort можно задавать собственную ф-цию сортировки.
http://novemberain.com/livedocs/Help.../00001200.html
my_array.sort(compareFunction:Function) : Array

iNils 28.07.2006 17:40

http://www.flasher.ru/forum/showthread.php?t=79513

Odyssus 28.07.2006 18:20

Спс всем за помощь!!
Особенно 2iNils


Часовой пояс GMT +4, время: 00:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.