Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Снова сортировка массивов ( FlashGuru помогите ) (http://www.flasher.ru/forum/showthread.php?t=52618)

Jlekc 12.12.2003 12:13

Снова сортировка массивов ( FlashGuru помогите )
 
FlashGuru помогите :rolleyes:

Как настаящий герой пошол в обход, написал даный сурс для сортировки с любым количеством сортируемых елементов:

Код:

Array.prototype.mySortOn = function() {
        this.constructor.arg = arguments;
        //        проблема с аргументами проверю потом
        //        -----        begin Compare
        function compare() {
                var argPrev = arguments[1].constructor.argPrev;
                arguments[1].constructor.argPrev = arguments[0];
                if (argPrev == undefined) {
                        arguments[1].sortOn(arguments[0]);
                } else {
                        var i = 0;
                        var _arr = [arguments[1][0]];
                        var _sort = [];
                        while (i<arguments[1].length) {
                                if (arguments[1][i][argPrev] == arguments[1][i+1][argPrev]) {
                                        _arr.push(arguments[1][i+1]);
                                } else {
                                        _arr.sortOn(arguments[0]);
                                        _sort = _sort.concat(_arr);
                                        delete _arr;
                                        _arr = [arguments[1][i+1]];
                                }
                                ++i;
                        }
                        return _sort;
                }
                return arguments[1];
        }
        //        -----        end of Compare
        while (this.constructor.arg.length>0) {
                this = compare(this.constructor.arg.shift(), this);
        }
        //        ????????????????? this уже не принадлежит к arr
        arr = this;
};
//        -------        end Of Function
arr = [];
arr.push({x:1, y:1, z:1});
arr.push({x:2, y:2, z:2});
arr.push({x:2, y:2, z:1});
arr.push({x:2, y:1, z:1});
arr.push({x:3, y:1, z:1});
arr.push({x:2, y:1, z:2});
arr.mySortOn("y", "x", "z");
//
for (var i = 0; i<arr.length; i++) {
        trace("x : "+arr[i].x+" | "+"y : "+arr[i].y+" | "+"z : "+arr[i].z);
}

код робочий но возник глюк. объект и его псевдоним раздилились :eek: Пришлось занова переприсваевать ( строка 34 ). ОТЦЫ подскажите что произошло плз :)
зарание благодарен

P.S. если будут идеи можно стучаться в аську

Пушистик 12.12.2003 13:17

а чё ваще должно сортироваЦа?:)в вертикальных столбцах что-ли?:)

Jlekc 12.12.2003 13:26

неа по горизонтальных :D
Я же натисал: arr.mySortOn("y", "x", "z")
Приоретет слева направо, а может сверху вниз ( не помню :p )


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

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