Проблема экспорта Crystal Report

Я понимаю, что это было спрошено некоторое время назад, но я думал, что добавлю свое решение.

Эта функция динамически генерирует методы сортировки. просто укажите каждое сортируемое дочернее свойство, добавленное +/-, чтобы указать восходящий или нисходящий порядок. Супер можно использовать повторно, и ему не нужно ничего знать о структуре данных, которую вы собрали вместе.

function getSortMethod(){
    var _args = Array.prototype.slice.call(arguments);
    return function(a, b){
        for(var x in _args){
            var ax = a[_args[x].substring(1)];
            var bx = b[_args[x].substring(1)];
            var cx;

            ax = typeof ax == "string" ? ax.toLowerCase() : ax / 1;
            bx = typeof bx == "string" ? bx.toLowerCase() : bx / 1;

            if(_args[x].substring(0,1) == "-"){cx = ax; ax = bx; bx = cx;}
            if(ax != bx){return ax < bx ? -1 : 1;}
        }
    }
}

пример использования:

items.sort (getSortMethod ('- price', '+ priority', ' + name '));

это сначала сортировало бы items с наименьшим price, причем привязки переходили к элементу с наивысшим priority. дальнейшие связи нарушаются элементом name

, где элементы представляют собой массив, подобный:

var items = [
    { name: "z - test item", price: "99.99", priority: 0, reviews: 309, rating: 2 },
    { name: "z - test item", price: "1.99", priority: 0, reviews: 11, rating: 0.5 },
    { name: "y - test item", price: "99.99", priority: 1, reviews: 99, rating: 1 },
    { name: "y - test item", price: "0", priority: 1, reviews: 394, rating: 3.5 },
    { name: "x - test item", price: "0", priority: 2, reviews: 249, rating: 0.5 } ...
];

live demo: http://gregtaff.com/misc/ multi_field_sort /

EDIT: Исправлена ​​проблема с Chrome.

0
задан Tan Nithirot 18 January 2019 в 09:19
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: