在tablesorter中对“人”数进行排序

时间:2014-10-03 02:03:14

标签: javascript sorting tablesorter

我使用tablesorter对一组值进行排序,这些值的格式从710,2316.39 million37.3 million5.3 million等不等。目前,插件排序只是忽略million,否则排序很好,但因此你会得到像'530万,639万,3730万,710,231,

1 个答案:

答案 0 :(得分:0)

您需要添加解析器以使用其值(demo)替换名称:

// see big list here: http://www.unc.edu/~rowlett/units/large.html
var numbers = {
    'zero'        : 0,
    'hundred'     : 100,
    'thousand'    : 1e3,
    'million'     : 1e6,
    'billion'     : 1e9,
    'trillion'    : 1e12,
    'quadrillion' : 1e15,
    'quintillion' : 1e18,
    'sextillion'  : 1e21,
    'septillion'  : 1e24,
    'octillion'   : 1e27,
    'nonillion'   : 1e30,
    'decillion'   : 1e33
};

$.tablesorter.addParser({
    id: "namedNumbers",
    is: function () {
        return false;
    },
    format: function (s, table) {
        var v,
            result = 1,
            arry = (s || '').split(/[\-\s]+/),
            len = arry.length;
        while (len) {
            v = $.tablesorter.formatFloat( (arry[--len] || '').toLowerCase(), table );
            if ( numbers.hasOwnProperty(v) ) {
                result *= numbers[v];
            } else {
                result *= parseFloat(v);
            }
        }
        return result !== 1 ? result : s;
    },
    type: "numeric"
});

$(function () {
    $('table').tablesorter({
        theme: 'blue',
        headers : {
            1 : { sorter : 'namedNumbers' }
        }
    });
});